Linux PPP HOWTO: Zautomatyzowanie połączenia - tworzenie skryptów do nawiązywania
Następna strona
Poprzednia strona
Spis treści
15. Zautomatyzowanie połączenia - tworzenie skryptów do nawiązywaniapołączenia
Skrypt o którym mowa automatyzuje procedurę logowania się i
uruchamiania połączenia PPP, tak aby administrator lub członek grupy
PPP do zestawienia połączenia musiał jedynie eydać polecenie ppp-on.
15.1 Skrypty w przypadku weryfikacji Identyfikatr//Hasło
Jeśli twój dostawca nie korzysta z PAP/CHAP, te skrypty są dla ciebie.
Jeśli pakiet PPP jest zainstalowany poprawnie powinieneś być w
posiadaniu dwóch przykładowych plików. W przypadku PPP 2.1.2 będą to
/usr/sbin/ppp-on
/usr/sbin/ppp-off
a w przypadku PPP-2.2
/etc/ppp/scripts/ppp-off
/etc/ppp/scripts/ppp-on
/etc/ppp/scriptsppp-on-dialer
Jeśli korzystasz z PPP 2.1.2 mocno namawiam cię do usunięcia tych
plików. Są źródłem potencjalnych klopotów - nie mów mi że działają
poprwnie - korzystałem z nich przez długi czas i rekomendowałem w
pierwszej wersji tego dokuemntu.
Dla użytkowników PPP 2.1.2 przedstawiam LEPSZE wersje wzorcowe tych
plików, pobrane z dystrybucjie PPP 2.2. Sugeruję skopiowanie i
korzystanie z tych skryptów zamiast startych skryptów z wersji 2.1.2.
15.2 ppp-on script
Pierwszy z PARY skryptów, uruchamiający połączenie.
#!/bin/sh
#
# Script to initiate a PPP connection. This is the first part of the
# pair of scripts. This is not a secure pair of scripts as the codes
# are visible with the 'ps' command. However, it is simple.
#
# These are the parameters. Change as needed.
TELEPHONE=555-1212 # The telephone number for the connection
ACCOUNT=george # The account name for logon (as in 'George Burns')
PASSWORD=gracie # The password for this account (and 'Gracie Allen')
LOCAL_IP=0.0.0.0 # Local IP address if known. Dynamic = 0.0.0.0
REMOTE_IP=0.0.0.0 # Remote IP address if desired. Normally 0.0.0.0
NETMASK=255.255.255.0 # The proper netmask if needed
#
# Export them so that they will be available to 'ppp-on-dialer'
export TELEPHONE ACCOUNT PASSWORD
#
# This is the location of the script which dials the phone and logs
# in. Please use the absolute file name as the $PATH variable is not
# used on the connect option. (To do so on a 'root' account would be
# a security hole so don't ask.)
#
DIALER_SCRIPT=/etc/ppp/ppp-on-dialer
#
# Initiate the connection
#
#
exec /usr/sbin/pppd debug /dev/ttySx 38400 \
$LOCAL_IP:$REMOTE_IP \
connect $DIALER_SCRIPT
A oto skrypt ppp-on-dialer:-
#!/bin/sh
#
# This is part 2 of the ppp-on script. It will perform the connection
# protocol for the desired connection.
#
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
15.3 Poprawianie dostarczonych skryptów startowych
Ponieważ nowe skrtypty są podzielone na dwie częście, bedziemy je
zmieniać po kolei.
Skrypt ppp-on
Muszisz zmienić ten skrypt podając TWÓJ identyfikator u teojego
prowajdera, TWOJE haslo dla tego konta i numer telefonu TWOJEGO
prowajdera.
Każdy z wierszy postaci TELEPHONE= tworzy zmienne którcy warość
to tekst występujący po prawej stronie znaku '='. (oczywiście poza
wierszami komentarza). Popraw wszystkei te wiersze, aby zawierały
poprawną inforamcje na temat twojego konta u dostawcy internetu.
Jeśli w pliku /etc/ppp/options podajesz numery IP (jeśli
potrzebujesz to robić) to USUŃ ze skryptów odpowiednie wiersze
zawierające
$LOCAL_IP:$REMOTE_IP \
Upewnij się również, że zmienna DIALER_SCRIPT wskazuje na pełną
ścieżkę dostępu do skryptu, którego chcesz ostatecznie używać. Więc
jeśli przeniosłeś ten skrypt w inne miejsce, lub zmieniłeś jego nazwę
pamiętaj o poprawieniu informacji w pliku ppp-on.
Jeśli skonfigurowałeś pp-on poprawnie i twój serwer PPP korzysta
z weryfikacj toższamości za pomocą pary identyfikator/hasło, nie
musisz już modyfikować skryptu ppp-on-dialer!!!
Pomimo, że port szeregowy może być konfigurowany w plikach startowych
systemu (/etc/rc.serial), stwierdziłem, że dobrym pomysłem jest
ponowne skonfigurowanie portu szeregowego w skrypcie ppp-on. W ten
sposób moge wykorzystywać modem do innych celów, i nie muszę pamiętać
o konieczności sprawdzania aktualnej konfiguracji portu szeregowego.
Tuż przed wierszem uruchamiającym pppd dodaj
/bin/setserial /dev/cuaX spd_vhi
W ten sposób port szeregowy jest ostatecznie ustawiany za prędskość
115200 bps, zamiast 38400. Jest to poprawna prędkość dla modemów 28.8k
(i szybszych). Jednakże wiele modemów 14.4k nie potrafi skonfigurować
swojego interfejsu modem-kompueter na taką prędkość.
Sprawdź w dokumentacji modemu, jeśli maksymalna prędkość modemu wynosi
38400, korzystaj z polecenia
/bin/setserial /dev/cuaX spd_normal
Uruchamianie PPP po stronie serwera
Podczas gdy skrypt ppp-on-dialer jest dobry dla serwera, który
automatycznie uruchamia pppd jak tylko zalogujesz się na serwerze,
niektóre systemy wymagają jawnego uruchomienia PPP.
Jeśli w celu uruchomienia PPP na serwerze musisz wydać określone
polecenie, MUSISZ poprawić skrypt ppp-on-dialer.
Na KOŃCU skryptu (po wierszu z hasłem) dodaj wiersz zawierający parę
expect send - taką , która będzie oczekiwała na zachętę (uwaga na
znaki o specjalnym znaczeniu w powłoce Bournea - np $ , [ lub ]
(otwierający i zamykający nawais kwadratowy).
Kiedy chat rozpozna zachęte powłoki, musi wydać polecenie, które
uruchamia PPP na serwerze twojego dostawcy.
W moim przypadku serwer PPP korzysta ze standardowego wiersza zachety
powłaoki Bash
[hartr@kepler hartr]$
i wymaga aby w celu uruchomienia PPP na serwerze wydał polecenie
ppp
Zawsze dobrze jest przewidzieć możliwości pewnych pomyłek. Dlatego w
moim przypadku używam
hartr--hartr ppp
To znaczy - jeśli nie doczekamy się zachęty w określonym czasie wyślij
znak enter i czekaj na zachęte raz jeszcze.
Kiedy jesteś pewien, ze otrzymałeś zachętę , wyślij ciag 'ppp'.
Uwaga: pamiętaj o doadniu znaku \ na końcu wiersza, tak aby chat nadal
myślał, że cały skrypt znajduje się w jednym wierszu!
Niestety część serwerów generuje bardzo zmienne zachęty! Być może
będzisz musiał zalogować się kilkakrotnie za pomocą programu
komunikacyjnego, zanim dokladnie zrozumiesz jak to jest i co można
przyjąć za zachętę do wydania polecenia.
Skrypt ppp-on-dialer
To jest drugi ze skryptów, który ostatecznie zestawia połączenie PPP.
Uwaga: skrypt chat zawiera się zwykle w jednym wierszu. Znaki '\'
pozwalają na kontynuwanie jednego logicznego wiersza skryptu przez
wiele fizycznych wierszy pliku (aby człowiek mogł się w tym lepiej
połapać) i nie tworzą same z siebie części skryptu.
Dobrze jest się temu przypatrzeć z bliska, abyśmy dobrze rozumieli co
tu się dzieje.
15.4 Co to jest skrypt chat ...
Skrypt chat to sekwencja par "oczekiwany ciąg znaków
" "ciąg znaków do
wysłania". W szczególności zanim cokolwiek wyślemy
ZAWSZE czegoś oczekujemy.
Jeśli mamy coś wysłać, BEZ wstępnego oczekiwania na cokolwiek,
musimy użyć putsego napisu oczekiwanego (oznaczanego w skryptach
tak: "") i podobnie jeśli czekamy na
cos, lecz nie mamy zamiaru w odpowiedzi niczego wysyłać! Również w
przypadku, napis składa się z kilku słów (np. NO CARRIER), musimy
otoczyć napis apostrofami tak aby char rozpoznał go jako pojedynczy
element.
Wiersz chat w naszym wzorcu wygląda następująco:-
exec chat -v
Uruchom program chat, -v informuje program, aby wszelkie dane WE/Wy
rejestrpwał w dzienniku systemowym (zwykle
/var/log/messages).
Kiedu już jesteś pewien, że skrypt jest poprawny usun opcję -v, w ten
sposób zredukujesz rozmiar dziennika.
TIMEOUT 3
Ten wiersz ustawia czas oczekiwania na nadejscie oczekiwanych znaków
na 3 sekundy. Jesli korzystasz z naprawdę wolnego modemu, możesz być
zmuszonym do wydłuzenia tego czasu do 5 lub 10 sekund.
ABORT '\nBUSY\r'
Jeśli napotkasz na napis BUSY przerwij działanie programu.
ABORT '\nNO ANSWER\r'
Jeśli napotkasz na napis NO ANSWER przerwij działanie programu.
ABORT '\nRINGING\r\n\r\nRINGING\r'
Jeśli napotkasz (powtarzający się) napis RINGING, przerwij działąnie
programu .
To znaczy, że ktoś do ciebie dzwoni!
\\ \rAT
Nie czekając wyślij do modemu napis AT
\OK-+++\c-OK\ ATH0
To jest troszkę skomplikowane, ponieważ korzysta z możliwości
naprawiania sytuacji wyjątkowych jakie ma zaimplementowane program
chat. Oznacza mniej więcej to ...
Oczekuj na napis OK, jeśli się nie doczekasz (ponieważ modem nie jest
w trybie poleceń) wyślij napis +++ (standardowe polecenie nakazujące
modemowi przejście w tryb poleceń) i oczekuj napisu OK; następnie
wyslij polecenie ATH0 (polecenie "odłożenia słuchaki" - przerwania
połączenia).
W ten sposób twój skrypt ma możliwość poradzić sobie z modemem, który
jest zablokowany w trybie on-line!
TIMEOUT 30
Ustaw czas oczekiwania dla pozostałej częsci skryptu na 30
sekund. Jeśli napotkasz na klopoty z powodu przekroczenia czasu
oczekiwania, zwiększ tę wartość do 45 lub więcej sekund.
OK ATDT$TELEPHONE
Oczekuj na napis OK (odpowiedź modemu na polecenie ATH0) i wybierz
numer pod który chcemy zadzwonić.
CONNECT ''
Oczekuj na napis CONNECT (który jest wysyłany przez nasz modem po
nawiązaniu połącenia z modemem odległym) i nie wysyłaj nic w odpowiedzi
ogin:--ogin: $ACCOUNT
Powtórnie trochę obsługi systuacji wyjątkowych. Oczekuj na zachętę
przedstawienia się systemowi (...ogin:) lecz jeśli się jej nie
doczekamy, wyślij znak niwego wiersza i ponownie czekaj na tę samą
zachętę. Jeśli się doczekasz wyślij identyfikator użytkownika
(przechowywany w zmiennej $ACCOUNT).
assword: $PASSWORD
Oczekuj na napis assword: i w zamian wyślij hasło (również
przechowywane w zmiennej powłoki).
Pwyższy skrypt ma sensowne możliwości radzenia sobie z niekturymi
sytuacjami wyjątkowymi. Sam program chat ma znacznie większe
możliwości, zapoznaj się ze stroną podręcznika, która go dotyczy (man 8 chat).
15.5 Skrypt chat dla połączeń wymagających weryfiakcaji PAP/CHAP.
Jeśli twój dostawca korzysta z możliwości PAP/CHAP, wtedy twój skrypt
jest znacznie prostszy. Wszystko co muszisz zrobić to wybrać numer,
poczekać na połączenie i pozwolić pppd na wejście do systemu i
zestawienie połączenia PPP.
#!/bin/sh
#
# This is part 2 of the ppp-on script. It will perform the connection
# protocol for the desired connection.
#
exec 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 Opcja debug i -f option_file programu pppd
Jak już to pokazaliśmy, w programie pppd istnieje możliwość włączenia
wyprowadzania i rejestracji komunikatów odpluskiwających.
Służy do tego opcja -d lub debug.
Podczas uruchamiania nowego połączenia PPP pozostaw w skrupcie opcję
-d. (Ostrzeżenie: jesli masz mało wolnej przestrzeni dyskowej
włączenie rejestracji odpluskwiających pppd może bardzo szybko
zapełnić wolne miejsce i możesz mieć z tego powodu kłopoty - wystarczy
aby nie udało ci się połączyć, a będziesz próbował nawiązać połączenie
jescze przez kila minut).
Kiedy będziesz pewien, że wszystko działa poprawnie, możesz ją wtedy usunąc.
Jeśli swoj plik z opcjami ppp nazwałeś incaczej niż
/etc/ppp/options lub /etc/ppp/options.ttySx możesz
go uaktywnić podając jego nazwę w wierszu poleceń jako wartość opcji
-f programu pppd - np.
exec /usr/sbin/pppd debug -f options.myserver /dev/ttySx 38400 \
Następna strona
Poprzednia strona
Spis treści
Wyszukiwarka
Podobne podstrony:
PPP HOWTO pl 6 (2)PPP HOWTO pl 9 (2)ppp howto pl 1PPP HOWTO pl 19 (2)ax25 howto pl 15Keyboard HOWTO pl 15 (2)PPP HOWTO pl 4 (2)PPP HOWTO pl 25 (2)PPP HOWTO pl 20 (2)PPP HOWTO pl 27 (2)PPP HOWTO pl 24 (2)PPP HOWTO pl 22 (2)PPP HOWTO pl 3 (2)PPP HOWTO pl 28 (2)PPP HOWTO pl 5 (2)ppp howto pl 16PostgreSQL HOWTO pl 15ppp howto pl 12Serial HOWTO pl 15 (2)więcej podobnych podstron