Provided by: manpages-pl_4.27.0-1_all bug

NAZWA

       chat - zautomatyzowany skrypt dialogu z modemem

SKŁADNIA

       chat [ opcje ] skrypt

OPIS

       Program  chat  definiuje wymianę rozmów między komputerem a modemem.  Jego głównym celem jest zestawianie
       połączeń pomiędzy demonem Point-To-Point (pppd), a procesem pppd drugiego końca.

OPCJE

       -f plik
              Odczytuje skrypt rozmowy z pliku plik. Używanie tej opcji wyklucza  parametry  skryptowe  rozmowy.
              Użytkownik  musi  mieć  prawa  do  odczytu tego pliku.  Dozwolonych jest wiele wierszy w pliku. Do
              oddzielania napisów powinny być używana spacja lub tabulacja.

       -t czas-oczekiwania
              Ustawia czas oczekiwania dla odbioru oczekiwanego łańcucha. Jeśli łańcuch nie zostanie odebrany  w
              limicie czasowym, to łańcuch odpowiedzi nie jest wysyłany. Może być natomiast wysłana alternatywna
              odpowiedź,  lub  skrypt  może  zostać  przerwany  w wypadku braku takiej alternatywy. Program chat
              zakończy  wtedy  działanie,  zwracając  niezerowy  kod  błędu.   Można   również   podać   łańcuch
              czas-oczekiwania, aby go określić.

       -r plik-raportu
              Ustaw  plik  dla  wyjścia  napisów raportujących. Jeżeli używa się słowa kluczowego REPORT, napisy
              wynikowe są zapisywane do tego pliku. Jeśli opcja ta nie jest używana, można  i  tak  używać  słów
              REPORT, które użyją pliku stderr.

       -e     Zaczyna  z włączoną opcją echo. Można ją również włączyć lub wyłączyć w danym miejscu skryptu chat
              za pomocą  słowa  kluczowego  ECHO.  Przy  włączeniu  opcji  echo,  całe  wyjście  z  modemu  jest
              przekierowane na standardowe wyjście błędów.

       -E     Włącza podmianę zmiennych środowiskowych w skryptach chat za pomocą standardowej składni $xxx

       -v     Żąda  uruchomienia skryptu chat w trybie szczegółowym. Program chat będzie wtedy logował wszystkie
              teksty uzyskane od modemu, a także te, które sam wysyła. Domyślnie logi  wysyłane  są  do  SYSLOG,
              metodę logowania można zmienić opcjami -S lub -s.

       -V     Żąda  uruchomienia  skryptu chat w trybie szczegółowym, ale na standardowe wyjście błędów. Program
              będzie wówczas logował wszelki tekst otrzymany z modemu i łańcuchy wyjściowe wysyłane do modemu do
              urządzenia stderr. Urządzenie to jest zwykle lokalną konsolą stacji  uruchamiającej  program  chat
              lub pppd.

       -s     Używa  standardowego  wyjścia błędów. Wszystkie komunikaty loga z -v wraz z komunikatami o błędach
              będą wysyłane na stderr.

       -S     Nie używa SYSLOG. Domyślnie, komunikaty o błędach są wysyłane do SYSLOG-a. Opcja -S  powoduje,  że
              komunikaty z opcji -v i wiadomości o błędach nie będą tam wysyłane.

       -T numer telefonu
              Przekazuje dowolny łańcuch, zwykle numer telefonu, który zostanie wstawiony w miejsce metaznaku \T
              w wysyłanym łańcuchu.

       -U numer telefonu 2
              Przekazuje drugi łańcuch, zwykle numer telefonu, który zostanie wstawiony w miejsce metaznaku \U w
              wysyłanym  łańcuchu.  Jest to przydatne przy wybieraniu adaptera terminala ISDN wymagającego dwóch
              numerów.

       script Jeśli skrypt nie jest podany opcją -f w pliku, to  skrypt  script  jest  włączany  jako  parametry
              programu chat.

SKRYPT ROZMOWY

       Skrypt rozmowy definiuje komunikację.

       Skrypt  składa  się  z  jednej lub większej ilości par napisów "oczekuj-wysyłaj", oddzielonych spacjami z
       ewentualnymi dodatkowymi parami "podoczekuj-podwysyłaj", oddzielonymi kreską, jak w przykładzie:

              ogin:-BREAK-ogin: ppp ssword: hello2u2

       Znaczy to, że chat powinien oczekiwać napisu "ogin:". Jeśli to zawiedzie  (minie  czas  oczekiwania),  to
       wysyła  na  drugi  koniec  sekwencję  przerwania (break) i oczekuje napisu "ogin:". Jeśli jednak pierwszy
       "ogin:" zostanie odebrany, sekwencja przerwania nie jest wysyłana.

       Gdy już uzyskaliśmy znak zachęty logowania, chat spróbuje wysłać napis ppp i oczekiwać na "ssword:".  Gdy
       go odczyta, to wyśle hasło hello2u2.

       Na  zakończenie  łańcucha  odpowiedzi zwykle wysyłany jest znak powrotu karetki. Nie jest on oczekiwany w
       napisie "oczekiwania", chyba że jest specyficznie wskazany, przez użycie sekwencji \r.

       Sekwencja oczekiwania powinna zawierać tylko to, co  potrzebne  do  zidentyfikowania  łańcucha.  Ponieważ
       normalnie  jest  przechowywana  na  dysku, nie powinna zawierać informacji zmiennych. Generalnie nie jest
       akceptowane podglądanie łańcuchów  czasu,  identyfikacji  sieci,  lub  innych  zmiennych  jako  sekwencji
       oczekiwanej.

       Aby pomóc poprawić znaki, które mogą być zmienione w sekwencji początkowej, oczekuj raczej napisu "ogin:"
       niż  "login:". Jest możliwe, że początkowy znak będzie odebrany z błędem, a wtedy można nigdy nie znaleźć
       oczekiwanego napisu, chociaż został on wysłany przez system. Z  tego  powodu,  skrypty  oczekują  "ogin:"
       zamiast "login:" i "ssword:" zamiast "password".

       Bardzo prosty skrypt może wyglądać następująco:

              ogin: ppp ssword: hello2u2

       Innymi słowy, oczekuj ....ogin:, wyślij ppp, oczekuj ...ssword:, wyślij hello2u2.

       W  rzeczywistości  proste  skrypty  są  raczej  rzadkie.  Powinno  się  przynajmniej  załączyć  sekwencje
       "pod-oczekiwania". Proszę na przykład rozważyć następujący skrypt:

              ogin:--ogin: ppp ssword: hello2u2

       Byłby to lepszy skrypt niż poprzedni. Oczekiwałby na ten sam znak  zachęty  login:,  lecz  gdyby  go  nie
       odebrał, wysłałby sekwencję powrotu i oczekiwał dalej.  Gdyby więc szum linii zniekształcił pierwszy znak
       zachęty, to późniejsze przesłanie pustej linii zazwyczaj wygeneruje nowe.

KOMENTARZE

       Komentarze można osadzić w skrypcie programu chat. Komentarz to wiersz zaczynający się znakiem # (kratką)
       w  kolumnie  1.  Są  ignorowane  przez  program  chat.  Jeśli  znak "#" ma znaleźć się jako pierwszy znak
       oczekiwanej sekwencji, oczekiwany łańcuch należy ująć w cudzysłów. Aby czekać na  zachętę  rozpoczynającą
       się # (kratką) można użyć składni podobnej do poniższej:

              # Teraz czekaj na zachętę i wyślij łańcuch wylogowania
              '# ' logout

WYSYŁANIE DANYCH Z PLIKU

       Jeśli  łańcuch  przeznaczony  do  wysłania zaczyna się małpą (@), to reszta łańcucha jest traktowana jako
       nazwa pliku do odczytania, z którego wzięty jest łańcuch do wysłania. Jeśli ostatnim znakiem  odczytanych
       danych  jest  znak  nowego wiersza, to jest on usuwany. Plik może być nazwanym potokiem (lub fifo), a nie
       tylko zwykłym plikiem. W ten sposób chat może komunikować się z innym programem np. z programem pytającym
       użytkownika o hasło i otrzymującym wpisane hasło.

ŁAŃCUCHY PRZERWANIA (ABORT)

       Wiele modemów raportuje status połączenia jako łańcuch. Łańcuchy te to np.  CONNECTED,  NO  CARRIER,  lub
       BUSY.  Często jest właściwym wyłączenie skryptu, jeśli modem nie połączy się z drugim końcem. Przy jednej
       próbie może odebrać BUSY, podczas gdy następnym razem zdarzyć się może NO CARRIER.

       Te łańcuchy "przerywania" mogą być podane w skrypcie przy użyciu sekwencji  ABORT.  Jest  to  zapisane  w
       poniższym przykładzie:

              ABORT BUSY ABORT 'NO CARRIER' ” ATZ OK ATDT5551212 CONNECT

       Sekwencja  ta  nie  będzie  niczego  oczekiwać;  później  wyśle  ATZ.  Oczekiwaną odpowiedzią jest OK. Po
       odebraniu OK, wysyłany jest łańcuch ATDT5551212, wykręcający numer  telefonu.  Oczekiwanym  napisem  jest
       CONNECT.  Jeśli  odebrany zostanie łańcuch CONNECT, to reszta skryptu jest wykonywana. Jednak jeśli modem
       spotka się z zajętą linią, to wyśle napis BUSY.  Łańcuch  ten  będzie  odpowiadał  sekwencji  przerwania.
       Skrypt  wtedy  zakończy działanie, ponieważ uzyskał rozkaz przerwania. Podobnie będzie, gdy skrypt uzyska
       łańcuch NO CARRIER.

ŁAŃCUCHY CLR_ABORT

       Sekwencja ta pozwala cofnąć wcześniej ustawiony łańcuch ABORT. Łańcuchy ABORT są przechowywane w  tablicy
       o  z  góry  zdefiniowanym  rozmiarze  (w  trakcie  kompilacji), CLR_ABORT odzyskają przestrzeń usuniętych
       wpisów, dzięki czemu nowe łańcuchy będą mogły jej użyć.

ŁAŃCUCHY "POWIEDZ" (SAY)

       Dyrektywa SAY pozwala skryptowi na wysłanie łańcucha do  użytkownika  i  na  terminal  przez  standardowe
       wyjście  błędów.  Jeśli  chat  został  uruchomiony  przez  pppd  działającego jako demona (odłączonego od
       kontrolującego go terminala),  to  standardowe  wyjście  błędów  jest  zwykle  przekierowywane  do  pliku
       /etc/ppp/connect-errors.

       Łańcuchy  SAY  muszą  być  ujęte  w  pojedynczy  lub  podwójny cudzysłów. Jeśli w łańcuchu ma pojawić się
       wyświetlany powrót karetki i wysuw wiersza, to trzeba dodać je jawnie do łańcucha.

       Łańcuchy SAY można wykorzystać do przekazania wiadomości o postępie w sekcjach skryptu z  włączoną  opcją
       "ECHO OFF", lecz gdzie wciąż istotne jest powiadomienie użytkownika o tym co się dzieje. Oto przykład:

              ABORT BUSY
              ECHO OFF
              SAY "Wybieranie numeru dostawcy...\n"
              ” ATDT5551212
              TIMEOUT 120
              SAY "Czekanie do 2 minut na połączenie... "
              CONNECT ”
              SAY "Połączono, teraz nastąpi zalogowanie...\n"
              ogin: account
              ssword: pass
              $ \c
              SAY "OK. Zalogowano...\n" etc ...

       Ta  sekwencja  wypisze  użytkownikowi  same  łańcuchy SAY, a wszystkie detale skryptu pozostaną ukryte. W
       powyższym przykładzie użytkownik zobaczy:

              Wybieranie numeru dostawcy...
              Czekanie do 2 minut na połączenie... Połączono, teraz nastąpi zalogowanie...
              OK. Zalogowano...

ŁAŃCUCHY RAPORTOWE

       Napis raportowy jest bardzo podobny do napisu przerywania. Różnica polega na tym, że łańcuchy i wszystkie
       znaki do następującego znaku sterującego, takiego jak CR, są wypisywane w pliku raportu.

       Łańcuchy raportu mogą być używane  do  izolowania  ze  napisu  połączenia  ciągu  określającego  szybkość
       transmisji  i zwracania wartości użytkownikowi.  Analiza logiki napisu raportowego występuje w połączeniu
       z innym przetwarzaniem napisu, takim jak podglądanie napisu oczekiwanego. Użycie tego samego napisu  jako
       przerywający i raportowy, prawdopodobnie nie jest zbyt użyteczne, jednak jest możliwe.

       Łańcuchy raportowe nie wpływają na kod zakończenia programu.

       Napisy raportowe mogą być podawane w skrypcie przy użyciu sekwencji REPORT. Jest to zapisywane w skrypcie
       jak w następującym przykładzie.

              REPORT CONNECT ABORT BUSY ” ATDT5551212 CONNECT ” ogin: account

       Sekwencja  ta  nie będzie oczekiwać niczego; a potem wyśle napis ATDT5551212, wykręcający numer telefonu.
       Oczekiwanym napisem jest CONNECT. Jeśli łańcuch  ten  jest  odebrany,  wykonywana  jest  reszta  skryptu.
       Dodatkowo,  program  wydrukuje  do  oczekującego  pliku  napis CONNECT plus dodatkowo znaki, które za nim
       podążały, takie jak szybkość połączenia.

ŁAŃCUCHY CLR_REPORT

       Sekwencja ta pozwala cofnąć wcześniej ustawiony  łańcuch  REPORT.  Łańcuchy  REPORT  są  przechowywane  w
       tablicy  o  z  góry  zdefiniowanym  rozmiarze  (w  trakcie  kompilacji),  CLR_REPORT odzyskają przestrzeń
       usuniętych wpisów, dzięki czemu nowe łańcuchy będą mogły jej użyć.

ECHO

       Opcje echo kontrolują czy wyjście z modemu jest przekierowywane na standardowe wyjście błędów.  Opcje  tę
       można   ustawić   za  pomocą  -e,  lecz  można  ją  kontrolować  również  słowem  kluczowych  ECHO.  Para
       "oczekuj-wysyłaj" ECHO ON włącza ją, a ECHO  OFF  -  wyłącza.  Słowo  kluczowe  pozwala  wybranie  części
       konwersacji która ma być widoczna. Przykładowo w poniższym skrypcie:

              ABORT 'BUSY'
              ABORT 'NO CARRIER'
              ” ATZ
              OK\r\n ATD1234567
              \r\n \c
              ECHO ON
              CONNECT \c
              ogin: account

       niewidoczne  są  komunikaty  wynikające  z  konfiguracji  modemu  i wybierania numeru, lecz poczynając od
       wiadomości CONNECT (lub BUSY) wszystko jest widoczne.

HANGUP

       Opcja HANGUP kontroluje, czy rozłączenie modemu ma być traktowane jako błąd, czy  też  nie.  Przydatne  w
       skryptach  do  systemów telefonicznych, które rozłączają się i później oddzwaniają. Opcja HANGUP może być
       włączona (ON) lub wyłączona (OFF).
       Gdy HANGUP jest ustawione na OFF i modem rozłącza się  (np.  po  pierwszej  fazie  logowania  do  systemu
       oddzwaniającego)  chat  kontynuuje  wykonywanie skryptu (np. oczekując na połączenie przychodzące i drugą
       fazę logowania). Zaraz po zawiązaniu połączenia przychodzącego powinno się użyć  dyrektywy  HANGUP  ON  w
       celu ponownego przywrócenia zwykłego zachowania. Oto (prosty) przykładowy skrypt:

              ABORT 'BUSY'
              ” ATZ
              OK\r\n ATD1234567
              \r\n \c
              CONNECT \c
              'Callback login:' call_back_ID
              HANGUP OFF
              ABORT "Bad Login"
              'Callback Password:' Call_back_password
              TIMEOUT 120
              CONNECT \c
              HANGUP ON
              ABORT "NO CARRIER"
              ogin:--BREAK--ogin: real_account
              etc ...

CZAS OCZEKIWANIA

       Początkowa  wartość czasu oczekiwania to 45 sekund. Może to być zmienione przy użyciu parametru -t. Można
       również podać "TIMEOUT 0".

       Aby zmienić wartość czasu oczekiwania dla następnego z oczekiwanych  napisów,  można  użyć  następującego
       przykładu:

              ATZ OK ATDT5551212 CONNECT TIMEOUT 10 ogin:--ogin: TIMEOUT 5 assword: hello2u2

       Zmieni  to  czas  oczekiwania na 10 sekund podczas oczekiwania zachęty login:. Następnie czas oczekiwania
       jest zmieniany na 5 sekund, podczas oczekiwania na czas oczekiwania password.

       Zmieniony czas oczekiwania pozostaje efektywny aż do następnej zmiany.

WYSYŁANIE EOT

       Specjalny napis odpowiedzi, EOT, wskazuje, że program chat powinien wysłać  znak  EOT  na  drugi  koniec.
       Normalnie  jest  to  sekwencja  End-of-file  (koniec pliku). Nie przesyłany jest po niej znak return. EOT
       można umieścić w wysyłanym łańcuchu za pomocą sekwencji ^D.

GENEROWANIE PRZERWANIA (BREAK)

       Specjalny łańcuch odpowiedzi, BREAK, spowoduje wysłanie warunku przerwania. Sygnał  ten  jest  specjalnym
       sygnałem.  Normalną  akcją  u  odbierającego  go  jest  zmiana  szybkości transmisji. Może być używany do
       przeskakiwania przez dostępne szybkości transmisji, aż  będzie  można  odebrać  prawidłowy  znak  zachęty
       logowania. Przerwanie można umieścić w wysyłanym łańcuchu za pomocą sekwencji \K.

SEKWENCJE UCIECZKI

       Łańcuchy  oczekiwania  i  odpowiedzi  mogą zawierać sekwencje ucieczki. Wszystkie sekwencje są poprawne w
       łańcuchu odpowiedzi. Wiele jest prawidłowe w napisie oczekiwania. Te, które nie są poprawne  w  sekwencji
       oczekiwania, są zaznaczone.

             Oczekuje lub wysyła łańcuch zerowy. W takim przypadku wysyłany jest znak return. Sekwencja ta może
              być zarówno parą apostrofów, jak i cudzysłowów.

       \b     reprezentuje znak backspace.

       \c     Powstrzymuje  generowanie  nowego  wiersza  na  końcu  łańcucha  odpowiedzi. Jest to jedyna metoda
              wysyłania napisu bez kończącego go znaku return. Musi być wysyłana na końcu  napisu.  Na  przykład
              sekwencja hello\c prześle po prostu znaki h, e, l, l, o.  (nieprawidłowe w łańcuchu oczekiwania).

       \d     Zatrzymuje  się  na  sekundę.  Program  używa sleep(1), który zatrzyma się maksymalnie na sekundę.
              (nieprawidłowe w łańcuchu oczekiwania)

       \K     Wstawia BREAK (nieprawidłowe w łańcuchu oczekiwania)

       \n     Przesyła znak nowego wiersza lub powrotu wysuwu wiersza.

       \N     Przesyła znak null. Ta sama sekwencja może być reprezentowana przez \0.  (nieprawidłowe w łańcuchu
              oczekiwania)

       \p     Pauzuje na część sekundy. Opóźnienie wynosi 1/10 sekundy.  (nieprawidłowe w łańuchu oczekiwania)

       \q     Zabrania zapisywania napisu do pliku SYSLOG. Do dziennika w  jego  miejscu  wpisywany  jest  napis
              ???????.    (nieprawidłowe w łańuchu oczekiwania)

       \r     Wysyła lub oczekuje znak powrotu karetki.

       \s     Reprezentuje  znak  spacji  w  łańuchu.  Może  to  być  używane,  gdy nie jest pożądanym cytowanie
              łańcuchów zawierających spacje. Sekwencje 'HI TIM' i HI\sTIM są identyczne.

       \t     Wysyła lub oczekuje znaku tabulacji.

       \T     Wysyła łańcuch numeru telefonu podany opcją -T. (nieprawidłowe w łańuchu oczekiwania)

       \U     Wysyła łańcuch numeru telefonu 2 podany opcją -U. (nieprawidłowe w łańuchu oczekiwania)

       \\     Wysyła lub oczekuje znak odwrotnego ukośnika.

       \ddd   Przekształca ósemkowe cyfry (ddd) w pojedynczy znak ASCII i wysyła ten znak.  (niektóre znaki  nie
               używane w sekwencji oczekiwania)

       ^C     Podmienia  sekwencję  znakiem  sterującym  (z Ctrl) reprezentowanym przez C.  Na przykład znak DC1
              (17) jest pokazywany jako ^Q.  (niektóre znaki nie  używane w sekwencji oczekiwania)

ZMIENNE ŚRODOWISKOWE

       Zmienne środowiskowe są dostępne w skryptach chat, jeśli w wierszu polecenia podano opcję -E. Metaznak  $
       jest  używany do wprowadzenia nazwy zmiennej środowiskowej do podmiany. Jeśli zamiana zawiedzie, ponieważ
       taka zmienna nie jest ustawiona, nic nie jest zamieniane zmienną.

KODY ZAKOŃCZENIA

       Program chat kończy swoje działanie z następującymi kodami wyjścia.

       0      Normalne zakończenie programu. Znaczy to, że skrypt został wykonany bez błędów.

       1      Jeden, lub więcej parametrów było nieprawidłowych, lub napis oczekiwania był zbyt duży dla buforów
              wewnętrznych. Wskazuje to, że program nie był prawidłowo uruchomiony.

       2      Pojawił się błąd podczas uruchomiania programu. Może to być spowodowane  błędem  operacji  odczytu
              lub zapisu, lub odebraniem przez program sygnału takiego, jak SIGINT.

       3      Nastąpiło minięcie czasu oczekiwania dla napisu oczekiwania, który nie miał napisu "pod-wysłania".
              Może  to  oznaczać,  że  nie  zaprogramowano właściwie skryptu na ten warunek, lub że pojawiło się
              jakieś nieoczekiwane zdarzenie i oczekiwany napis nie mógł zostać znaleziony.

       4      Pojawił się pierwszy łańcuch oznaczony jako warunek ABORT.

       5      Pojawił się drugi łańcuch oznaczony jako warunek ABORT.

       6      Pojawił się trzeci łańcuch oznaczony jako warunek ABORT.

       7      Pojawił się czwarty łańcuch oznaczony jako warunek ABORT.

       ...    Inne kody wyjścia są również łańcuchami oznaczonymi jako ABORT.

       Używając kodu wyjścia, możliwym  jest  określenie,  które  zdarzenie  zakończyło  skrypt.  Jest  możliwym
       określenie  czy modem otrzymał np. napis "BUSY" czy "NO DIAL TONE". Podczas gdy pierwsze zdarzenie wymaga
       drugiej próby, drugie w ten sposób może mieć mniejsze szanse.

ZOBACZ TAKŻE

       Dodatkowe informacje o skryptach chat można znaleźć w dokumentacji UUCP. Skrypty programu chat powstały z
       idei zaproponowanych przy skrypt programu uucico.

       uucico(1), uucp(1)

PRAWA AUTORSKIE

       Program chat jest znajduje się w domenie publicznej. Nie jest to  publiczna  licencja  GNU.  Autorzy  nie
       udzielają żadnej gwarancji.

TŁUMACZENIE

       Tłumaczenie   niniejszej   strony  podręcznika:  Przemek  Borys  <pborys@dione.ids.pl>  i  Michał  Kułach
       <michal.kulach@gmail.com>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje  o  warunkach  licencji  można  uzyskać
       zapoznając   się   z   GNU General Public License w wersji 3   lub  nowszej.  Nie  przyjmuje  się  ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej  manpages-pl-
       list@lists.sourceforge.net.

Chat Wersja 1.22                                  22 maja 1999                                           CHAT(8)