Sziasztok!
Sajnos az elmúlt napokat gúglizással töltöttem, eredmény nélkül...az általam felvetett kérdésre nem találtam még választ. Mivel már korábban is remek hasznos tanácsot kaptam itt, ezért hozzátok fordulok.
A KÉRDÉS:
Adott egy gép, amin nincsen se monitor, se billentyűzet. Csücsül egy polcon, és egyetlen célfeladat elvégzésére kellene beállítani:
1.) automatikusan betárcsáz egy modemre a WVDIAL parancs segítségével
2.) sikeres betárcsázás esetén továbblép és egy meghatározott módon felépít egy routing táblát, különféle szabályokkal
3.) vonalszakadás esetén ismétel
A fenti lépéseket automatikusan, boot után kellene elvégezni. Vagyis ha a gép tápot kap = elindul = automatikusan elvégzi a lépéseket.
A fenti lépések már szépen mennek külön, egyenként. Felismeri a modemet, minden stimmel, minden szuper. Egyetlen egy gondom van csak. Ha írok erre egy script-et, akkor a vwdial a "elveszi" az ablakot magának egészen addig, amíg a kapcsolat él, vagyis hiába van a script végén a route parancsok hada...nem hajtódnak végre, mert a wvdial "fogja" az ablakot. A további parancsok kizárólag a wvdial manuális (ctrl+C) megszakítása után futnak le.
Tudom, hogy valami apróságon csúszom el, de nem jöttem rá, hogy min!
ui:
A rendszer 8.1.0-s Debian.
Plíz help!
- 3389 megtekintés
Hozzászólások
wvdial (...) | while read CMD; do if [[ $CMD == CONNECT* ]]; then echo most csatlakozott fi; done
A vonalszakadásra meg csinálhatsz egy ugyanilyen if-then-fi szerkezetet, más feltétellel. A CONNECT*-ban a csillag azt jelenti, hogy a "CONNECT" szöveggel kell kezdődnie a sornak.
- A hozzászóláshoz be kell jelentkezni
Köszönöm! Ejha. Na ez (nekem) bonyolult :) De azt hiszem értem! Hamarosan ki is próbálom! A vonalszakadásost is be tudnád írni? Nagy help lenne. Még nagyon tanuló fokozatban vagyok Linux terén...
Közben kipróbáltam...
Valami nagyon nem tetszik neki.
- A hozzászóláshoz be kell jelentkezni
Subshellben futtasd a wvdial-t, a subshell-t meg háttérben, így tovább fog menni a programod.
(
wvdial ...
...
) &
itt fut tovább, miközben a wvdial, s az őt futtató subshell nem tért vissza
A ... csak azt jelenti, oda írd, amit szeretnél. A gömbölyded zárójelek közti rész önálló shellben fut, a végén az & jel háttérbe teszi, s a fő shell nem várja meg a subshell futásának befejeztét. Így lehet több szálon futtatni programokat egyszerre shellben.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Ez így már megy :) köszönöm :) És ha vissza akarnám hozni úgymond az "előtérbe" a wvdial-t a háttérből, akkor azt milyen paranc segítségével lehet megtenni?
- A hozzászóláshoz be kell jelentkezni
Van olyan, hogy fg jobspec, csak kellene tudni a hivatkozást, melyik job. Nehezen tudom elképzelni az értelmét, meg azt, mi történne ilyenkor. Mit szeretnél csinálni? Miért lenne erre szükséged? Valahol a későbbiekben várakoznál a wvdial-ra? Én azt szoktam, hogy megkeresem a pid-jét, és várok, amíg kilép.
PRG='wvdial'
while pgrep -u "$USER" -x "$PRG" >/dev/null; do
sleep 1
done
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Köszönöm :) Ez még kissé magas nekem, de lelkesen próbálkozom majd ha lesz kis időm :)
- A hozzászóláshoz be kell jelentkezni
Most egy kicsit nem leszek gépközelben, de ha lesz módom, segítek, meg a többiek is.
Olvasnivaló. Vannak benne példák, magyarázatok. Nagyon jó doksi.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Nyomtatom is, viszem magammal olvasni :)
- A hozzászóláshoz be kell jelentkezni
wvdial-t soha nem hasznaltam, de ha jol latom, csak egy frontend a pppd-hez. Ha igy van, akkor a pppd ip-up szkriptjeben tudod beallitani a route-okat (/etc/ppp/ip-up, ez Debianban az /etc/ppp/ip-up.d alatti szkripteket inditja). A szkriptben a frissen felepult kapcsolat parameterei is elerhetoek a PPP_IFACE, PPP_TTY, PPP_SPEED, PPP_LOCAL, PPP_REMOTE, PPP_IPPARAM valtozokban.
- A hozzászóláshoz be kell jelentkezni
Valóban. Próbáltam már belenézni, de jelen tudásom mellett egyszerűbbnek tűnt a manuális átirkálás a route add és route del parancsokkal :)
A ppp-ben az ip-up scriptekre eddig nem találtam nekem való leírást. Ha erről valaki tudna adni egy kis leírást és meg tudnám spórolni a manuális állítgatást, az nagy help lenne :)
Igazából erre szeretnék valami scriptet írni:
- a gép boot után automatikusan ellenőrzi, hogy van-e netkapcsolat a hálózattal
- ha van, akkor megpingel egy IP-t (másik eszköz) a hálózaton
- ha visszajön a ping, akkor továbblép és betárcsáz a (már említett wvdial-os) modemre
- a betárcsázás sikeressége után megpingeli a modemet és a modem által felépített ppp kapcsolat IP-jét
(a modem magától osztja az IP-t önmagának és a ppp kapcsolatnak, amit a gép "lát". Ezek fixek).
- ha ezek is visszajöttek, akkor beállítja az IP forwardot és a statikus route táblákat (betárcsázós modem és ethernet közt)
- ha mindez rendben van, akkor jelzi a felhasználónak, hogy a rendszer kész
Ezek közül ami eddig megy:
- manuális wvdial tárcsázás
- manuális ip forward
- manuális route beállítás
- A hozzászóláshoz be kell jelentkezni
egyszerűbbnek tűnt a manuális átirkálás a route add és route del parancsokkal
Itt is pont ezt kell csinalni :-)
A kulonbseg annyi, hogy az
/etc/ppp/ip-up
szkriptet csak akkor hivja meg a pppd, ha mar felepult az IP kapcsolat. Igy nem kell amiatt aggodni, hogy hamarabb akarod beallitani a route-okat, mint ahogy a kapcsolat letrejon (es meg a tuloldal IP cimet sem neked kell kitalalni).
Pelda szkript (
/etc/ppp/ip-up.d/setup-routes
):
#! /bin/sh
ip route add 192.168.0.0/16 via "$PPP_REMOTE" dev "$PPP_IFACE"
ip route add 172.16.0.0/12 via "$PPP_REMOTE" dev "$PPP_IFACE"
- A hozzászóláshoz be kell jelentkezni
Ááááááh.....akkor most rágódom ezen is egy kicsit :))) Emésztem a sok tudást.
Ha összejön ez a projekt, akkor mindenki a vendégem egy sörre! :)
- A hozzászóláshoz be kell jelentkezni
Egyszerre szerkesztettuk a hozzaszolasokat... :-)
1. a gép boot után automatikusan ellenőrzi, hogy van-e netkapcsolat a hálózattal
2. ha van, akkor megpingel egy IP-t (másik eszköz) a hálózaton
3. ha visszajön a ping, akkor továbblép és betárcsáz a (már említett wvdial-os) modemre
4. a betárcsázás sikeressége után megpingeli a modemet és a modem által felépített ppp kapcsolat IP-jét
(a modem magától osztja az IP-t önmagának és a ppp kapcsolatnak, amit a gép "lát". Ezek fixek).
5. ha ezek is visszajöttek, akkor beállítja az IP forwardot és a statikus route táblákat (betárcsázós modem és ethernet közt)
6. ha mindez rendben van, akkor jelzi a felhasználónak, hogy a rendszer kész
1. folosleges, ha a 2. lepesben visszajon a ping, akkor van halozat. Amugy miert van szukseg erre?
3. (feltetelezem, hogy percdijas a kapcsolat)
A pppd-nek van egy
demand
modja, amikoris csak akkor hozza letre a kapcsolatot, amikor forgalom is van rajta (a tavoli gep IP cime fix kell legyen). Ilyenkor nagyon hasznos meg az
idle
opcio, ami a forgalom megszunese utan le tudja loni a linket.
5. IP forward mehet boot-kor, nem zavar senkit, a route-okat pedig a kapcsolat letrejottekor az ip-up szkript fogja beallitani
6. hangjelzes?
- A hozzászóláshoz be kell jelentkezni
Nos teljesen jogosak a kérdéseid, ezek alapján:
1. Talán én bonyolítottam túl. Jogos. Összevonható, elhagyható pont.
3. Valóban nem ingyen wifiről van szó, de ez egyfajta "védelem is", vagyis itt jelezhetne a gép (hangjelzéssel akár), hogy hiba van és nem lép tovább mert nincsen hálózat se, akkor minek hívogasson ki a modemen.
5. ip fwd v4 boot-kor ok tulajdonképpen, route pedig ip-up indulás után akár. Jogos.
6. igen, hangjelzés
:)
- A hozzászóláshoz be kell jelentkezni
ez egyfajta "védelem is", vagyis itt jelezhetne a gép (hangjelzéssel akár), hogy hiba van és nem lép tovább mert nincsen hálózat se, akkor minek hívogasson ki a modemen
A
demand
mod miatt a pppd csak akkor fog tarcsazni, amikor adatforgalom akar kimenni a tavoli gep IP cime fele. Amig nincs halozat, emiatt nem kell kulonosebben aggodni :-)
(ezzel egyutt ilyenkor el lehet inditani egy szirenazast, hogy tudd, hogy nincs halozat)
6. igen, hangjelzés
A
beep
pont erre valo (bar soha nem hasznaltam).
- A hozzászóláshoz be kell jelentkezni
Ez a demand hogy működik pontosan? Gúgli a barátom, szokták mondani. De néha nem a barátom :((( Most se.
- A hozzászóláshoz be kell jelentkezni
Az a lenyege, hogy a pppd indulaskor letrehozza a ppp eszkozt, felkonfiguralja a helyi es tavoli IP-ket, beallitja a route-okat. Az eszkoz pontosan ugy nez ki, mintha mukodne, pedig a pppd meg nem is tarcsazott. Mivel a kernel szempontjabol "van internet" (a default gateway a ppp eszkozon keresztul elerheto), a kernel siman kikuldi a ppp eszkozre az esetleges halozati forgalmat. Amint a pppd latja, hogy van kimeno forgalom, inditja a tarcsazast (persze lesz egy jopar masodperces kesleltetes a legelso csomagnal, amig a modem magahoz ter).
Lasd meg: http://www.tldp.org/LDP/nag2/x7297.html
- A hozzászóláshoz be kell jelentkezni
Áháááá..... :) Már olvasom is a csatolt infót!
- A hozzászóláshoz be kell jelentkezni