ppp howto pl 15 AHBZP2RCKFONOJZQDEOJR4UX6OXTCOQR7AYDRPQ


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 1
PPP HOWTO pl 19 (2)
ax25 howto pl 15
Keyboard 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 16
PostgreSQL HOWTO pl 15
ppp howto pl 12
Serial HOWTO pl 15 (2)

więcej podobnych podstron