Provided by: manpages-pl_20051117-1_all bug

NAZWA

       chat - Zautomatyzowany skrypt dialogu z modemem

SKŁADNIA

       chat [ options ] script

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 <chat file>
              Odczytaj  skrypt  rozmowy  z  pliku  file.  Używanie  tej  opcji
              wyklucza parametry skryptowe rozmowy. Użytkownik musi mieć prawa
              do odczytu tego pliku.  Dozwolonych jest wiele linii w pliku. Do
              oddzielania napisów powinny być używana spacja lub tabulacja.

       -t <timeout>
              Ustaw timeout dla odbioru oczekiwanego napisu. Jeśli  napis  nie
              zostanie  odebrany  w  limicie czasowym, to napis odpowiedzi nie
              jest  wysyłany.  Może   być   natomiast   wysłana   alternatywna
              odpowiedź,  lub  skrypt  może  zostać  przerwany w wypadku braku
              takiej alternatywy. Chat  zakończy  wtedy  działanie,  zwracając
              niezerowy kod błędu.

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

       -v     Żądaj uruchomienia skryptu chat w trybie  verbose  (gadatliwym).
              Program  chat  będzie wtedy logował wszystkie teksty uzyskane od
              modemu, a także te,  które  sam  wysyła.  Logi  wysyłane  są  do
              SYSLOG.

       -V     Żądaj  uruchomienia  skryptu chat w trybie verbose (gadatliwym),
              ale na stderr. (tym się to różni od powyższego).  Urządzenie  to
              jest  zwykle  lokalną konsolą stacji uruchamiającej program chat
              lub pppd. Opcja ta nie będzie działać prawidłowo,  jeśli  stderr
              jest przekierowane na /dev/null, co ma miejsce gdy pppd działa w
              trybie `detached' (odłączonym od konsoli). W  tym  wypadku  użyj
              opcji `-v' do zapisywania sesji na urządzeniu SYSLOG.

       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  (nastąpi  timeout),  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  prompt  logina, chat spróbuje wysłać napis ppp i
       oczekiwać na prompt "ssword:". Gdy odczyta ten prompt, to wyśle  hasło,
       hello2u2.

       Na  zakończenie  napisu odpowiedzi zwykle wysyłany jest CR. 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  napisu.  Ponieważ  normalnie  jest  przechowywana  na
       dysku,  nie  powinna zawierać informacji zmiennych. Generalnie nie jest
       akceptowane podglądanie napisów  czasowych,  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żesz 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.  Przynajmniej
       powinieneś załączyć sekwencje "pod-oczekiwania". Np. rozważ następujący
       skrypt:

              ogin:--ogin: ppp ssword: hello2u2

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

STRINGI PRZERWANIA (ABORT)

       Wiele modemów raportuje status połączenia jako napisy. Napisy 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  napisy  "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 napis
       ATDT5551212,  wykręcający  numer  telefonu.  Oczekiwanym  napisem  jest
       CONNECT.  Jeśli odebrany zostanie napis CONNECT, to reszta skryptu jest
       wykonywana. Jednak jeśli modem spotka się  z  zajętą  linią,  to  wyśle
       napis  BUSY.  Napis  ten będzie odpowiadał sekwencji przerwania. Skrypt
       wtedy zakończy działanie, ponieważ uzyskał rozkaz przerwania.  Podobnie
       będzie, gdy skrypt uzyska napis NO CARRIER.

STRINGI RAPORTOWE

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

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

       Napisy 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 napis 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.

TIMEOUT

       Początkowa  wartość  timeoutu  to 45 sekund. Może to być zmienione przy
       użyciu parametru -t.

       Aby zmienić wartość timeoutu 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
              assowrd: hello2u2

       Zmieni to timeout na 10  sekund  podczas  oczekiwania  promptu  login:.
       Następnie  timeout  jest  zmieniany na 5 sekund, podczas oczekiwania na
       prompt password:.

       Zmieniony timeout 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.  Nie przesyłany jest po niej znak return.  Sekwencja EOT może być
       załączona do wysyłanego napisu przy użyciu sekwencji ^D.

GENEROWANIE PRZERWANIA (BREAK)

       Specjalny   napis   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  prompt  logina.   Sekwencja  przerwania  może  być
       załączona do wysyłanego napisu przy użyciu sekwencji \K.

SEKWENCJE ESKEJPOWE

       Napisy oczekiwania i  odpowiedzi  mogą  zawierać  sekwencje  eskejpowe.
       Wszystkie  sekwencje  są  legalne  w  napisie  odpowiedzi.  Wiele  jest
       legalnych w napisie oczekiwania. Te, które nie są legalne  w  sekwencji
       oczekiwania, są zaznaczone.

       ''     Oczekuje  lub  wysyła napis zerowy. Jeśli wysyłasz napis zerowy,
              to wysyłany będzie znak return. Sekwencja ta  może  być  zarówno
              parą apostrofów, jak i znaków cytowania.

       \b     reprezentuje znak backspace.

       \c     Powstrzymuje generowanie nowej linii na końcu napisu 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.  (nie  uywane  w
              napisie oczekiwania)

       \d     Zatrzymaj  się na sekundę. Program użyj sleep(1), który zatrzyma
              się maksymalnie na sekundę.  (nie uywane w napisie oczekiwania)

       \K     Wstaw BREAK (nie uywane w napisie oczekiwania)

       \n     Prześlij znak nowej linii.

       \N     Prześlij  znak  null.  Ta sama sekwencja może być reprezentowana
              przez \0.  (nie uywane w napisie oczekiwania)

       \p     Pauzuj na część sekundy. Opóźnienie wynosi 1/10  sekundy.   (nie
              uywane w sekwencji oczekiwania)

       \q     Zabroń  zapisywania  napisu  do  pliku  SYSLOG.  Do  logu w jego
              miejscu wpisywany jest napis ???????.  (nie uywane w  sekwencji
              oczekiwania)

       \r     Wyślij lub oczekuj CR.

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

       \t     Wyślij lub oczekuj znaku tabulacji.

       \\     Wyślij lub oczekuj znaku odwrotnego ukośnika.

       \ddd   Przekształć  ósemkowe  cyfry  (ddd)  w  pojedynczy  znak ASCII i
              wyślij ten znak.  (niektre znaki nie  s  uywane  w  sekwencji
              oczekiwania)

       ^C     Podmień  sekwencję  znakiem  sterującym (z Ctrl) reprezentowanym
              przez C.  Na przykład znak DC1 (17)  jest  pokazywany  jako  ^Q.
              (niektre znaki nie s uywane w sekwencji oczekiwania)

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 zdarzenie timeoutu dla napisu oczekiwania,  który  nie
              miał   napisu   "pod-wysłania".   Może   to   oznaczać,  że  nie
              zaprogramowałeś  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 napis zaznaczony jako warunek ABORT.

       5      Pojawił się drugi napis zaznaczony jako warunek ABORT.

       6      Pojawił się trzeci napis zaznaczony jako warunek ABORT.

       7      Pojawił się czwarty napis zaznaczony jako warunek ABORT.

       ...    Inne kody wyjścia są również napisami zaznaczonymi 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 DIALTONE". 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.

       uucico(1), uucp(1)

COPYRIGHT

       Program chat jest w public domain. Nie jest to licencja GNU.