Sziasztok !
Probalok osszetakolni egy scriptet, mert egy vandorlo notebookon unalmas mindig atirni/allitgatni a http_proxy-t.
Jelenleg az /etc/environment van beallitva, a rendszer debian etch.
- Hogyan lehet shell scriptben letrehozni/beallitani kornyezeti valtozot?
- Hova, hogyan erdemes elhelyezni, a scriptet? Az /etc/network/if-up.d/ jo lehet?
#!/bin/sh
def_gw=`netstat -rn | grep "^0\.0\.0\.0" | cut -f10 -d" " | cut -f3 -d"."`
case "$def_gw" in
12)
declare http_proxy="12-proxy"
;;
23)
declare http_proxy="23-proxy"
;;
*)
declare http_proxy=""
;;
esac
- 1970 megtekintés
Hozzászólások
Ha jól tudom, akkor a Shell-ben a http_proxy körny. változód fogja mutatni mi a proxy-d.
export http_proxy=http://proxy.teproxyd.hu
sor lesz a Te barátod...
De a gnome, meg az ilyenek (lehet, hogy rosszul tudom) máshonnan veszik.
Ha csak parancssorban kell, akkor én irnék rá egy bash fv-t, ami minden új shell indításakor elérhető lesz.
setproxy()
{
}
majd, ha kiadod a setproxy parancsot, akkor hagy választani a proxyk közül.
- A hozzászóláshoz be kell jelentkezni
Ja és persze a ~/.bashrc azért tudjon erről a fv-ről. Vagy source-old be egy file-ból, v írd bele...
- A hozzászóláshoz be kell jelentkezni
Ha a `netstat -r -n` _semmi_ esetre sem blokkol, akkor az /etc/profile-ba mehet bele, akkor minden juzernek minden shell inditaskor szepen beleteszi. Ha csak egy adott juzernek kell, akkor ugyanezt, .bashrc es .bash_profile-ba bele. Ha blokkolna, akkor talan a /proc/net/route alapjan, annak a kiolvasasa szinte biztos nem blokkol.
A.
- A hozzászóláshoz be kell jelentkezni
A netstat eddig nem volt problemam, az /etc/profile stb. azert nem gondoltam, mert nem tudom, hogy a cron is hasznalja, korraba emlekeim szerint csak az /etc/enviromentet olvasta. Es az se biztos, hogy a halozat automatikusan feleled, a wifit direkt manualisan huzom be, ha kell.
A gond az, hogy egy sima script-ben hogyan allitom be a kornyezeti valtozot, amikor a script lefutott, a valtozo is eltunik.
- A hozzászóláshoz be kell jelentkezni
Gondolom az kell, hogy a mozilla-t vagy barmilyen bongeszot elindito alkalmazas tudjon errol a valtozorol. Ha a gepen a grafikat pl startx-szel inditod, ahhoz ugye be kell lepned konzol alatt, arra jo ha az /etc/profile-t vagy a sajat .bash{rc,_profile} file-t hasznalod. Ha xdm-et hasznalsz, akkor meg kell nezni, hogy mi indul el mikor a juzer inditja az x-et. Gyanus, hogy .Xsession v. .xinitrc, ezeken megy vegig, majd innen indul a windowmanager is.
Nezd meg egy `ps -A xuf`-fal a processz tree-det, kik is a szulei a bongeszodnek, oszt valamelyik kenyelmes ponton tedd bele...
A.
- A hozzászóláshoz be kell jelentkezni
> A gond az, hogy egy sima script-ben hogyan allitom be a kornyezeti valtozot, amikor a script lefutott, a valtozo is eltunik.
Igen, és nem is tudod normálisan megoldani, ez tervezés szerint működik így. Mi lenne, ha a ezt csinálnád:
export http_proxy=`itt_a_script_ami_csak_KIIRJA_a_megfelelo_erteket`
És persze a fent hívott script-ben tényleg csak kiírás lesz. Vagy a másik lehetőség, hogy a scriptben törénik meg az exportálás, de nem
$ scriptem
hanem
$ . scriptem
formában indítod. Ekkor valójában az aktuális shell-ben hajtódnak végre a "scriptem" utasításai, így a kívánt eredményt éred el.
- A hozzászóláshoz be kell jelentkezni
> $ . scriptem
Ezzel, megint tanultam valamit.
Mukodik ugy hogy /etc/profile beirom/meghivom, a scriptet. Ha nincs jobb helye, akkor marad itt.
- A hozzászóláshoz be kell jelentkezni
a user/pass parost hogyan erdemes belerakni? gondolom nem illik plaintextben belevesni a .bash_profile-ba
udv Zoli
- A hozzászóláshoz be kell jelentkezni
milyen user? milyen pass? csak annyi, hogyha ezt az egesz environment problemat egy adott felhasznalo igenyli csak (pl a laptop tulajdonosa es kvazi kizarolagos hasznaloja) akkor nem erdemes /etc/profile-ba beletenni, hanem mehet a sajat kis szemelyes ~/.bash{rc,_profile} file-jaiba is. Itt mar maga a `login` elvegezte az autentikalast, az /etc/profile tartalma is mar a loginolt juzer jogai alatt fut.
- A hozzászóláshoz be kell jelentkezni
Tobb user is van a laptopon. Hal istennek proxy auth nincs. A ~/.bash{rc,_profile} is az a problema, hogy szerintem a cronjob-ok, daemon-ok nem tudnak a proxyrol. Igy a problemam tovabbra is az, hogy pl. clamav, apticron, stb hogy talala ki a netre?
- A hozzászóláshoz be kell jelentkezni
Elvbe ezert van a /etc/environment. Esetleg a pam_env -et be kene rakni a pam konfigokba, es bekonfigolni, hogy szedje ossze a *_proxy valtozokat is. Ekkor barki, aki nem root-tal fut, beemelinti maganak a megfelelo valtozot. A cron meg mindenkepp atviszi a pam-on az egeszet.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Ezt egy kicsit reszletesenben tudnad vazolni? Gugliztam, de a valaszt nem igazan leletem, hogy hogyan alitsam be /etc/environment -be egy valtozot scrip-bol, ami raadasul a halozat ebredese utan tudja a proxy-t. Ugyanez igaz, a pam_env-re is.
(Egyenlore beraktam az /etc/prifile-ba a script-et, a user-nel jo, de sudo mar nem veszi a proxy beallitasokat.)
- A hozzászóláshoz be kell jelentkezni
A /etc/environment amugy asszem egy sima shell script, annyi difivel, hogy a mindenkori /bin/sh futtatja, igy erdemes vigyazni a szintaxissal, konvencio, hogy csak valtozodefiniciok legyenek benne.
scriptbol peldaul en igy csinalnam:
sed -i -e "/http_proxy=/s@\".*\"@\"${computed_proxy}\"@" \
-e "/ftp_proxy=/s@\".*\"@\"${computed_proxy}\"@" /etc/environment
A pam_env egy pam modul, azt a common-auth es common-session fajlokba kell asszem tenni az ott levo szintaxis szerint. Ha mazlid van, mar benne is van.
--
()=() Ki oda vagyik,
('Y') hol szall a galamb
C . C elszalasztja a
()_() kincset itt alant.
- A hozzászóláshoz be kell jelentkezni
Koszi, most volt idom vele foglalkozni, mukodik a dolog. Otletes megoldas, nekem nem jutott eszembe, nem lattam a fatol az erdot :).
- A hozzászóláshoz be kell jelentkezni