Jest to polecenie autoexpect, które można uruchomić u dostawcy bezpłatnego hostingu OnWorks przy użyciu jednej z naszych wielu bezpłatnych stacji roboczych online, takich jak Ubuntu Online, Fedora Online, emulator online systemu Windows lub emulator online systemu Mac OS
PROGRAM:
IMIĘ
autoexpect - wygeneruj skrypt Expect z oglądania sesji
STRESZCZENIE
autooczekiwanie [ args ] [ program argumenty... ]
WPROWADZENIE
autoexpect obserwuje, jak wchodzisz w interakcję z innym programem i tworzy skrypt Expect, który
odtwarza twoje interakcje. W przypadku skryptów prostych autoexpect pozwala zaoszczędzić sporo czasu
nad pisaniem skryptów ręcznie. Nawet jeśli jesteś ekspertem Expect, znajdziesz to
wygodny w użyciu autoexpect do automatyzacji bardziej bezmyślnych części interakcji. To jest
o wiele łatwiej jest wycinać/wklejać fragmenty skryptów autoexpect razem, niż pisać je z
zadrapanie. A jeśli jesteś początkujący, być może uda Ci się niczego nie nauczyć
więcej o Expect niż o tym, jak wywołać autoexpect.
Najprostszym sposobem użycia autoexpect jest wywołanie go z wiersza poleceń bez argumentów.
Na przykład:
% autooczekiwanie
Domyślnie autoexpect tworzy dla ciebie powłokę. Mając nazwę programu i argumenty,
autoexpect odradza ten program. Na przykład:
% autoexpect ftp ftp.cme.nist.gov
Gdy twój odrodzony program jest uruchomiony, normalnie współdziałaj. Kiedy wyjdziesz z muszli
(lub program, który określiłeś), autoexpect utworzy dla Ciebie nowy skrypt. Domyślnie,
autoexpect zapisuje nowy skrypt do "script.exp". Możesz to zmienić za pomocą flagi -f
po którym następuje nowa nazwa skryptu.
Poniższy przykład uruchamia "ftp ftp.cme.nist.gov" i przechowuje wynikowy skrypt Expect
w pliku "nist".
% autoexpect -f nist ftp ftp.cme.nist.gov
Ważne jest, aby zrozumieć, że autoexpect nie gwarantuje działania skryptu, ponieważ
z konieczności musi zgadywać pewne rzeczy - a czasami zgaduje źle.
Jednak zazwyczaj bardzo łatwo jest zidentyfikować i naprawić te problemy. Typowe problemy
należą:
· Wyczucie czasu. Zaskakująco duża liczba programów (rn, ksh, zsh, telnet itp.)
a urządzenia (np. modemy) ignorują naciśnięcia klawiszy, które pojawiają się „zbyt szybko” po
monity. Jeśli zauważysz, że nowy skrypt zawiesza się w jednym miejscu, spróbuj dodać
krótki sen tuż przed poprzednią wysyłką.
Możesz wymusić to zachowanie, nadpisując zmienną
„force_conservative” na początku wygenerowanego skryptu. Ten
Tryb „konserwatywny” sprawia, że autoexpect automatycznie zatrzymuje się na krótko (jedna dziesiąta części
sekundę) przed wysłaniem każdego znaku. To uspokaja każdy program, który znam
z.
Ten konserwatywny tryb jest przydatny, jeśli chcesz się tylko szybko uspokoić
że problem dotyczy czasu (lub jeśli naprawdę nie zależy Ci na tym, jak szybko)
skrypt jest uruchamiany). Ten sam tryb można wymusić przed wygenerowaniem skryptu przez:
za pomocą flagi -c.
Na szczęście te punkty czasowe są rzadkie. Na przykład telnet ignoruje
znaki dopiero po wprowadzeniu jego sekwencji ucieczki. Tylko modemy ignorują
znaków natychmiast po połączeniu się z nimi po raz pierwszy. Kilka
programy wykazują to zachowanie przez cały czas, ale zazwyczaj mają przełączenie na
wyłącz to. Na przykład flaga rn -T wyłącza to zachowanie.
Poniższy przykład uruchamia autoexpect w trybie zachowawczym.
autooczekiwanie -c
Flaga -C definiuje klawisz do przełączania trybu konserwatywnego. Poniższy przykład
uruchamia automatyczne oczekiwanie (w trybie niekonserwatywnym) z przełącznikiem ^L. (Zauważ, że
^L jest wprowadzane dosłownie - tj. wprowadź prawdziwą kontrolkę-L).
autooczekiwanie -C ^L
Poniższy przykład uruchamia autoexpect w trybie zachowawczym z ^L jako
przełącznik.
autooczekiwanie -c -C ^L
· Echo. Wiele znaków echa programu. Na przykład, jeśli wpiszesz „więcej” do a
shell, to co faktycznie widzi autoexpect to:
wpisałeś „m”,
komputer wpisał 'm',
wpisałeś „o”,
komputer wpisany 'o',
wpisałeś „r”,
komputer wpisał 'r',
...
Bez konkretnej wiedzy o programie nie można wiedzieć, czy jesteś
czekając, aż każdy znak zostanie powtórzony przed wpisaniem następnego. Jeśli spodziewasz się automatycznie
widzi echo znaków, zakłada, że może wysłać je wszystkie jako grupę
zamiast przeplatać je tak, jak pierwotnie wyglądały. To sprawia, że
Skrypt przyjemniejszy do czytania. Jednak może to być niepoprawne, jeśli:
naprawdę musiałeś poczekać, aby zobaczyć każdy znak powtórzony.
· Reszta. Autoexpect rejestruje każdą postać z interakcji w skrypcie.
Jest to pożądane, ponieważ daje możliwość dokonywania osądów na temat
co jest ważne i co można zastąpić dopasowaniem do wzorca.
Z drugiej strony, jeśli używasz poleceń, których wynik różni się od uruchomienia do uruchomienia,
wygenerowane skrypty nie będą poprawne. Na przykład „data”
polecenie zawsze generuje inne dane wyjściowe. Więc używając komendy date while
uruchomienie autoexpect to pewny sposób na stworzenie skryptu, który będzie wymagał edycji
aby to zadziałało.
Flaga -p przełącza autoexpect w "tryb podpowiedzi". W tym trybie autoexpect będzie
szukaj tylko ostatniego wiersza wyjścia programu - którym zwykle jest
podpowiedź. To rozwiązuje problem z datą (patrz wyżej) i większość innych.
Poniższy przykład uruchamia automatyczne oczekiwanie w trybie monitu.
autooczekiwanie -p
Flaga -P definiuje klawisz do przełączania trybu podpowiedzi. Zaczyna się następujący przykład
autoexpect (w trybie bez monitu) z ^P jako przełącznikiem. Zauważ, że ^P to
wpisane dosłownie - tzn. wprowadź realną kontrolkę-P.
autooczekiwanie -P ^P
Poniższy przykład uruchamia automatyczne oczekiwanie w trybie zachęty z ^P jako przełącznikiem.
autooczekiwanie -p -P ^P
INNE FLAGI
Połączenia -cichy flaga wyłącza komunikaty informacyjne generowane przez autoexpect.
Połączenia -Q flaga nazywa znak cudzysłowu, którego można użyć do wprowadzenia znaków, których oczekuje się automatycznie
w przeciwnym razie zużyłyby się, ponieważ są używane jako przełączniki.
Poniższy przykład pokazuje kilka flag z cytatem służących do podania sposobu wprowadzania
przełączniki dosłownie.
autooczekiwanie -P ^P -C ^L -Q ^Q
STYL
Nie wiem, czy istnieje „styl” dla programów typu Expect, ale zdecydowanie powinien to być autoexpect
nie należy traktować jako żadnego modelu stylu. Na przykład autoexpect wykorzystuje funkcje Expect
przeznaczone specjalnie do tworzenia skryptów komputerowych. Więc nie próbuj
wiernie pisz skrypty, które wyglądają tak, jakby zostały wygenerowane przez autoexpect. To nie jest
przydatny.
Z drugiej strony, skrypty autoexpect pokazują pewne wartościowe rzeczy. Na przykład ty
może zobaczyć, jak dowolny ciąg musi być cytowany, aby użyć go w skrypcie Tcl, po prostu uruchamiając
ciągi przez autoexpect.
Korzystaj z autoexpect online za pomocą usług onworks.net