Expect is a Unix automation and testing tool, written by Don Libes as an extension to the Tcl scripting language, for interactive applications such as telnet, ftp, passwd, fsck, rlogin, tip, ssh, and others. It uses Unix pseudo terminals to wrap up subprocesses transparently, allowing the automation of arbitrary applications that are accessed over a terminal. With Tk, interactive applications can be wrapped in X11 GUIs.

PropertyValue
dbpedia-owl:Software/license
dbpedia-owl:Work/author
dbpedia-owl:author
dbpedia-owl:license
dbpprop:abstract
  • Expect is a Unix automation and testing tool, written by Don Libes as an extension to the Tcl scripting language, for interactive applications such as telnet, ftp, passwd, fsck, rlogin, tip, ssh, and others. It uses Unix pseudo terminals to wrap up subprocesses transparently, allowing the automation of arbitrary applications that are accessed over a terminal. With Tk, interactive applications can be wrapped in X11 GUIs.
  • Expect jest to pakiet języka Tcl, który pozwala na interakcję z aplikacjami terminalowymi. Tworzy on własny terminal, który "udaje" użytkownika obsługującego program konsolowy. Choć teoretycznie jest możliwe sterowanie przez Expecta aplikacją w "curses", to najczęściej wykorzystuje się go do sterowania aplikacjami za pomocą prostego odczytywania i wypisywania ciągu znaków - jak np. aplikacje typu powłoka, telnet, czy FTP. Funkcje pakietu Kwestia tego, czy Expect może być po prostu pakietem, zależy od tego, jak aktualnie zainstalowano i skonfigurowano Tcl-a na danej maszynie, dlatego też często istnieje on w najprostszej postaci - jako samodzielny interpreter Tcl-a razem z wbudowanym pakietem Expect, dostępny na Uniksie pod poleceniem "expect". Oczywiście istnieje również wersja Expect działająca pod kontrolą systemu Microsoft Windows (oferuje go - odpłatnie - ActiveState, ewentualnie można skorzystać z pakietu Cygwin), ale najpowszechniej Expect jest używany na systemach typu POSIX. Podstawowe komendy Podstawowymi komendami Expecta są "spawn", "send" oraz "expect". Żeby podać mały przykład, zaprezentuję w jaki sposób możemy zrobić skrypt, który sam zaloguje się na zdalny host (zdalny. host. pl) i odczyta zawartość katalogu domowego, po czym wypisze go na ekranie. Praca z pakietem Najpierw uruchamiamy podległą aplikację, czyli telnet: spawn telnet zdalny. host. pl Komenda ta zapisze w zmiennej spawn_id identyfikator utworzonego połączenia z podległą aplikacją; będą z niej potem korzystać komendy "send" i "expect". Teraz nasz skrypt musi zaczekać, aż zdalny host napisze "login:". expect "login:" Komenda ta powoduje cykliczne odczytywanie z kanału, do którego aplikacja usiłuje zapisywać, myśląc, że pisze na terminal. Komenda kończy się, gdy w odczytanym tekście znajdzie się szukany napis. No więc send "sektor\r" Tekst musi się kończyć znakiem \r. W przeciwnym razie mielibyśmy taki efekt, jakby ktoś wpisał nazwę użytkownika i zapomniał nacisnąć enter. Teraz zaczekamy na zachętę do hasła. Ponieważ zdarza się, że owo "password" będzie się zaczynało wielką literą, a czasem małą, możemy ją pominąć i użyć po prostu: expect "password:" I oczywiście podamy mu hasło send "wr353fg466s\r" Powinniśmy zaczekać na prompt, ale odczytamy wszystko, co się da. Załóżmy też drobne opóźnienie, żeby nie odczytał za mało. Następnie spróbujemy odczytać sam prompt przez po prostu naciśnięcie enter: sleep 2 expect * send \r expect ">" Czas zatem na naszą akcję: send "ls\r" expect "ls" expect ">" { set directory $expect_out(buffer) } Po co to expect "ls"? Cóż, terminal sam wypisze komendę, którą wpisaliśmy (gdyby tego nie zrobił, byłby efekt podobny do prośby o hasło - wpisujemy a nic nie widać). Teraz trzeba jeszcze usunąć ostatnią linijkę, którą był prompt i wypisać to na ekranie: set directory [join [lrange [split $directory \n] 1 end-1] \n] puts $directory Czemu od 1, nie od 0? Ponieważ było expect "ls", więc znak końca linii pozostał w buforze. Następna po tym komenda expect odczytała z $expect_out(buffer) wszystko co było w buforze, aż do ciągu, który podano w instrukcji expect. Expect posiada jeszcze wiele ciekawych komend pozwalających na bardziej inteligentne interakcje, ale te pokazane tutaj są używane w przeważającej większości. Z expectem trzeba zawsze trochę poeksperymentować (niestety terminale potrafią sprawiać różne niespodzianki), w czym pomaga opcja -d w poleceniu expect - wtedy na standardowe wyjście diagnostyczne wypisywane są kolejne akcje podejmowane przez expecta. Nie ma też uniwersalnych rad, jak pisać pod expectem - należy po prostu zaprogramować skrypt, żeby tak rozmawiał z aplikacją, jak robiłby to człowiek. Expect posiada nawet specjalne komendy nadające takie ustawienia, że komenda "send" wpisuje tekst z odpowiednimi nieregularnymi opóźnieniami, udając człowieka. Autor pakietu Autorem Expecta jest Don Libes. Tu jest Strona główna expecta .
  • Expect — инструмент для автоматизации и тестирования в ОС Unix, написанный Don Libes как расширение к скрипт-языку Tcl, для интерактивных приложений таких, как telnet, ftp, passwd, fsck, rlogin, tip, ssh, и других. С помощью Tk интерактивные приложения могут быть использованы с графическим интерфейсом (GUI) X11.
  • Expect是Unix系统中用来进行自动化控制和测试的软件工具,由Don Libes制作,作为Tcl脚本语言的一个扩展,应用在交互式软件中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等。该工具利用Unix伪终端包装其子进程,允许任意程序通过终端接入进行自动化控制;也可利用Tk工具,将交互程序包装在X11的图形用户界面中。
dbpprop:author
dbpprop:hasPhotoCollection
dbpprop:latestReleaseVersion
  • 5.44.1
dbpprop:license
dbpprop:name
  • Expect
dbpprop:operatingSystem
dbpprop:programmingLanguage
dbpprop:reference
dbpprop:website
dbpprop:wikiPageUsesTemplate
rdf:type
rdfs:comment
  • Expect is a Unix automation and testing tool, written by Don Libes as an extension to the Tcl scripting language, for interactive applications such as telnet, ftp, passwd, fsck, rlogin, tip, ssh, and others. It uses Unix pseudo terminals to wrap up subprocesses transparently, allowing the automation of arbitrary applications that are accessed over a terminal. With Tk, interactive applications can be wrapped in X11 GUIs.
  • Expect jest to pakiet języka Tcl, który pozwala na interakcję z aplikacjami terminalowymi. Tworzy on własny terminal, który "udaje" użytkownika obsługującego program konsolowy. Choć teoretycznie jest możliwe sterowanie przez Expecta aplikacją w "curses", to najczęściej wykorzystuje się go do sterowania aplikacjami za pomocą prostego odczytywania i wypisywania ciągu znaków - jak np. aplikacje typu powłoka, telnet, czy FTP.
  • Expect — инструмент для автоматизации и тестирования в ОС Unix, написанный Don Libes как расширение к скрипт-языку Tcl, для интерактивных приложений таких, как telnet, ftp, passwd, fsck, rlogin, tip, ssh, и других.
  • Expect是Unix系统中用来进行自动化控制和测试的软件工具,由Don Libes制作,作为Tcl脚本语言的一个扩展,应用在交互式软件中如telnet,ftp,Passwd,fsck,rlogin,tip,ssh等等。该工具利用Unix伪终端包装其子进程,允许任意程序通过终端接入进行自动化控制;也可利用Tk工具,将交互程序包装在X11的图形用户界面中。
rdfs:label
  • Expect
  • Expect
  • Expect
  • Expect
owl:sameAs
skos:subject
foaf:homepage
foaf:name
  • Expect
foaf:page
is dbpprop:programmingLanguage of