Next Previous Contents

15. Avtomatizacija povezav - priprava povezovalnih skript

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

15.1 Skripte za uporabniško ime/geslo avtentikacijo

Č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.

15.2 skripta 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

15.3 Urejanje priskrbljenih PPP zagonskih skript

Ker so nove skripte v dveh delih, jih bomo urejali posebej.

Skripta ppp-on

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!

ppp-on-dialer skripta

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!

15.4 Kaj Chat skripta pomeni...

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

To nastavi, koliko časa chat čaka na niz, ki ga pričakuje (v sekundah). Mogoče boste morali to povečati na 5 ali 10 sekund, če imate res počasen modem!


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.

Zagon PPP-ja na strežniku

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.

15.5 Chat skripta za PAP/CHAP povezave

Č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         ''                              \

15.6 Pppd opciji 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 \


Next Previous Contents