Provided by: manpages-pl_20060617-4_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.

INFORMACJE O TŁUMACZENIU

       Powyższe   tłumaczenie   pochodzi   z   nieistniejącego   już  Projektu
       Tłumaczenia Manuali i moe nie by aktualne. W razie zauważenia  różnic
       między powyższym opisem a rzeczywistym zachowaniem opisywanego programu
       lub funkcji, prosimy o zapoznanie się z oryginalną  (angielską)  wersją
       strony podręcznika.