Medtem ko se lahko nadaljujete prijavljati ročno kot zgoraj, je dosti bolj čedno, da naredite nekaj skript, ki to delo opravijo namesto vas.
Skupina skript avtomatizira prijavljanje in zagon PPP-ja, tako da je vse kar morate narediti (kot root ali član PPP skupine) za vzpostavitev povezave, vnos enega samega ukaza
Če vaš PIS NE zahteva uporabe PAP/CHAP-a, so to skripte za vas!
Če je ppp paket pravilno nameščen, bi morali imeti dve vzorčni datoteki.
Za PPP 2.1.2 sta v /usr/sbin
, za PPP 2.2 pa v
/etc/ppp/scripts/
. Imenujeta se:
za PPP-2.1.2
ppp-on
ppp-off
in za PPP-2.2
ppp-off
ppp-on
ppp-on-dialer
Če uporabljate PPP 2.1.2, vas rotim, da zbrišete vzorčni datoteki. Z njima so možne težave - in ne govorite mi, da delujeta v redu - tudi jaz sem ju uporabljal dosti časa (in priporočal v prvi verziji tega HOWTO-ja)!
Za dobro uporabnikov PPP 2.1.2, sta tu BOLJŠA primera, vzeta iz distribucije PPP 2.2. Priporočam, da skopirate ti skripti namesto starih skript PPP 2.1.2.
ppp-on
To je prva izmed PARA skript, ki dejansko vzpostavita povezavo.
#!/bin/sh # # Skripta za vzpostavitev PPP povezave. To je prva izmed para skript. # Te skripte niso varne, ker je geslo vidno z uporabo ukaza ,,ps``. # Vsekakor pa sta skripti enostavni. # # To so parametri. Po potrebi jih spremenite. TELEPHONE=555-1212 # Telefonska številka ACCOUNT=janez # Uporabniško ime PASSWORD=geselce # Geslo za to uporabniško ime LOCAL_IP=0.0.0.0 # Lokalna IP številka, če je znana, sicer 0.0.0.0 REMOTE_IP=0.0.0.0 # Oddaljena IP številka. Navadno 0.0.0.0 NETMASK=255.255.255.0 # Pravilen netmask, če je potreben # # Izvozimo jih, da bodo na voljo skripti ,,ppp-on-dialer`` export TELEPHONE ACCOUNT PASSWORD # # To je lokacija skripte, ki pokliče in se prijavi. Prosimo uporabljajte # absolutne poti, ker spremenljivke $PATH tu ni. (Kaj takega pri ,,root-u`` # bi bila varnostna luknja, zato ne sprašujte.) # DIALER_SCRIPT=/etc/ppp/ppp-on-dialer # # Vzpostavimo povezavo # # exec /usr/sbin/pppd debug /dev/ttySx 38400 \ $LOCAL_IP:$REMOTE_IP \ connect $DIALER_SCRIPT
Tu je skripta ppp-on-dialer
#!/bin/sh # # To je drugi del povezovalnih skript. Vzpostavil bo povezavo. # /usr/sbin/chat -v \ TIMEOUT 3 \ ABORT '\nBUSY\r' \ ABORT '\nNO ANSWER\r' \ ABORT '\nRINGING\r\n\r\nRINGING\r' \ '' \rAT \ 'OK-+++\c-OK' ATH0 \ TIMEOUT 30 \ OK ATDT$TELEPHONE \ CONNECT '' \ ogin:--ogin: $ACCOUNT \ assword: $PASSWORD
Za PPP-2.2, izgleda skripta ppp-off
takole:
#!/bin/sh ###################################################################### # # Ugotovimo napravo, ki jo je treba ,,pokončati``. # if [ "$1" = "" ]; then DEVICE=ppp0 else DEVICE=$1 fi ###################################################################### # # Če je ppp0 pid datoteka prisotna, program teče. Ustavimo ga. if [ -r /var/run/$DEVICE.pid ]; then kill -INT `cat /var/run/$DEVICE.pid` # # Če ukaz kill ne deluje, na tem pid-u ne teče noben proces. Lahko pomeni # tudi, da bo lock datoteka ostala. Dobro bi bilo zbrisati tudi lock datoteko. if [ ! "$?" = "0" ]; then rm -f /var/run/$DEVICE.pid echo "NAPAKA: odstranjena stara pid datoteka" exit 1 fi # # Uspeh. Pustimo pppd-ju počistit lastno svinjarijo. echo "PPP povezava na $DEVICE končana." exit 0 fi # # na ppp0 ne teče ppp proces echo "NAPAKA: na $DEVICE ni PPP povezave" exit 1
Ker so nove skripte v dveh delih, jih bomo urejali posebej.
Skripto boste morali urediti, da bo odražala VAŠE uporabniško ime pri vašem PIS-u, VAŠE geslo pri vašem PIS-u in telefonsko številko vašega PIS-a.
Vsaka od vrst kot TELEPHONE=
dejansko ustvari lupinsko spremenljivko,
ki vsebuje podatek desno od znaka ,=` (Seveda brez komentarjev). Uredite
vsako od teh vrst, da bo pravilna za vašega PIS-a in povezavo.
Ker IP številko (če je potrebno) nastavite v /etc/ppp/options/
,
IZBRIŠITE vrstico
$LOCAL_IP:$REMOTE_IP \
Preverite tudi , da spremenljivka DIALER_SCRIPT kaže na polno pot in ime
skripte, ki jo boste dejansko uporabljali. Če ste jo torej premaknili ali
preimenovali, popravite ppp-on
skripto!
To je druga od skript, ki dejansko vzpostavijo našo ppp povezavo.
Opomba: chat skripta je navadno v eni vrstici. Leve poševnice so uporabljene za nadaljevanje vrstice čez več fizičnih vrst (za človeško branje) in ne tvorijo same skripte.
Vseeno pa jo je dobro podrobno pogledati, da razumemo kaj naj bi dejansko počela!
Chat skripta je zaporedje parov ,,pričakovani niz``, ,,poslani niz``. Zapomnite si, da ZMERAJ nekaj pričakujemo, preden nekaj pošljemo.
Če moramo nekaj poslati, ne da bi nekaj prejeli, moramo uporabiti prazen pričakovan niz (viden kot '') in podobno, ko nekaj pričakujemo brez pošiljanja! Če niz sestoji iz več besed (npr. NO CARRIER), moramo niz dati v narekovaje, da ga chat vidi kot celoto.
chat vrstica v naši skripti je:
exec /usr/sbin/chat -v
Ta pokliče chat, -v mu pove, naj ves svoj V/I (vhod/izhod) vpiše v sistemski
dnevnik (navadno /var/log/messages
). Ko skripta chat
deluje
zanesljivo, zbrišite -v
, da ne boste imeli nepotrebnega smetja v vašem
dnevniku.
TIMEOUT 3
ABORT '\nBUSY\r'
Če sprejme niz BUSY, prekine operacijo.
ABORT '\nNO ANSWER\r'
Podobno.
ABORT '\nRINGING\r\n\r\nRINGING\r'
Če chat večkrat sprejme niz RINGING, prekine operacijo. To je zato, ker vas po telefonu nekdo kliče!
'' \rAT
Chat ne pričakuje ničesar, in pošlje niz AT.
OK-+++\c-OK ATH0
Ta niz je nekoliko bolj kompliciran, ker uporablja nekatere chatove možnosti odpravljanja napak.
Pravi pa tole... pričakuj OK
, če ga NE sprejmeš (ker modem ni v ukaznem
načinu), pošlji +++
(standardni Hayes kompatibilni ukaz, ki modem vrne v
ukazni način) in pričakuj OK
. Potem pošlji ATH0
(niz za prekinitev
linije).
To omogoča, da je skripta kos situaciji, ko modem obtiči na liniji!
TIMEOUT 30
Nastavi čas na 30 sekund za preostanek skripte. Če imate težave z zaključevanjem chat skripte zaradi timeouta, povečajte vrednost na 45 sekund ali več.
OK ATDT$TELEPHONE
Pričakuj OK
(modemov odgovor na ukaz ATH0
) in kliči številko,
ki jo želimo klicati.
CONNECT ''
Pričakuj CONNECT
(kar modem pošlje, ko se oddaljeni modem oglasi) in ne
pošlji ničesar.
ogin:--ogin: $ACCOUNT
Znova vgrajenega nekaj okrevanja po napakah. Pričakuj login poziv (...ogin:), če pa ga ne dobiš do timeouta, pošlji return in zopet čakaj na poziv. Ko poziv prejmeš, pošlji uporabniško ime (shranjeno v lupinski spremenljivki $ACCOUNT).
assword: $PASSWORD
Pričakuj poziv za geslo in pošlji svoje geslo (znova, shranjeno v lupinski spremenljivki).
Ta chat skripta vsebuje nekaj sposobnosti okrevanja po napakah. Chat ima še
mnogo možnosti, ki tukaj niso prikazane. Za podrobnosti si oglejte
man 8 chat
.
Medtem ko je ppp-on-dialer skripta dobra za strežnike, ki samodejno zaženejo pppd na strežniku, ko se prijavite, nekateri strežniki zahtevajo ekspliciten zagon PPP-ja na strežniku.
Če morate vnesti ukaz za zagon PPP-ja na strežniku, MORATE popraviti ppp-on-dialer skripto.
Na koncu skripte (po vrstici z geslom) dodajte še en pričakovano poslano par - Ta naj čaka na vaš ukazni poziv (pazite na znake, ki imajo v Bourneovi lupini poseben pomen - kot so $ in [ ali ] (odprt in zaprt oglati oklepaj).
Ko chat sprejme lupinski poziv, mora poslati ukaz za zagon ppp-ja, potreben na PPP strežniku vašega PIS-a.
V mojem primeru, ima PPP strežnik standarden Linux Bash poziv
[hartr@kepler hartr]$
in zahteva naj vpišem
ppp
za zagon PPP-ja na strežniku.
Tu je dobro dovoliti nekaj okrevanja po napakah, tako da v mojem primeru uporabim
hartr--hartr ppp
to pravi naj, če pred določenim časom ne dobi poziva, chat pošlje return in znova čaka na poziv.
Ko ga sprejme, pošlje niz ppp
.
Opomba: ne pozabite dodati \ na konec prejšnje vrste, da chat misli, da je celotna skripta v eni vrsti!
Na žalost nekateri strežniki producirajo različne pozive! Mogoče se boste morali ročno povezati večkrat, da boste vedeli, kaj se dogaja in izbrali prave pričakovane nize.
Če vaš PIS uporablaj PAP/CHAP, je chat skripta mnogo bolj enostavna. Vse kar mora narediti je, da pokliče številko, počaka na povezavo in prepusti prijavljanje pppd-ju!
#!/bin/sh # # To je drugi del ppp-on skripte. Izvedel bo povezovanje za želeno povezavo. # exec /usr/sbin/chat -v \ TIMEOUT 3 \ ABORT '\nBUSY\r' \ ABORT '\nNO ANSWER\r' \ ABORT '\nRINGING\r\n\r\nRINGING\r' \ '' \rAT \ 'OK-+++\c-OK' ATH0 \ TIMEOUT 30 \ OK ATDT$TELEPHONE \ CONNECT '' \
debug
in file option_file
Kot smo že videli, lahko vključite izpis razhroščevalnih informacij z opcijo -d pppd-ju. Opcija ,debug` je enakovredna.
Ker vzpostavljamo novo povezavo z novo skripto, to opcijo zaenkrat pustimo. (pozor: če imate malo prostora na disku, lahko ta izpis hitro poveča vaš sistemski dnevnik in vas spravi v težave - toda za kaj takega se morate poskusiti povezati kar nekajkrat).
Ko enkrat vse deluje v redu, lahko to opcijo umaknete.
Če ste vašo datoteko z možnostmi imenovali drugače kot
/etc/ppp/options
ali /etc/ppp/options.ttySx
, imenujte
datoteko z uporabo opcije file
pppd-ju - naprimer:
exec /usr/sbin/pppd debug file options.mojpis /dev/ttyS0 38400 \