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
              używane w napisie oczekiwania)

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

       \K     Wstaw BREAK (nie używane w napisie oczekiwania)

       \n     Prześlij znak nowej linii.

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

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

       \q     Zabroń zapisywania napisu do pliku SYSLOG. Do logu w jego  miejscu  wpisywany  jest
              napis ???????.  (nie używane 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.
              (niektóre znaki nie  używane w sekwencji oczekiwania)

       ^C     Podmień 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)

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  może
       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.