一、概述
我們通過Shell可以實現簡單的控制流功能,如:循環、判斷等。但是對于需要交互的場合則必須通過人工來干預,有時候我們可能會需要實現和交互程序如telnet服務器等進行交互的功能。而Expect就使用來實現這種功能的工具。
Expect是一個免費的編程工具語言,用來實現自動和交互式任務進行通信,而無需人的干預。Expect的作者Don Libes在1990年 開始編寫Expect時對Expect做有如下定義:Expect是一個用來實現自動交互功能的軟件套件 (Expect [is a] software suite for automating interactive tools)。使用它系統管理員 的可以創建腳本用來實現對命令或程序提供輸入,而這些命令和程序是期望從終端(terminal)得到輸入,一般來說這些輸入都需要手工輸入進行的。 Expect則可以根據程序的提示模擬標準輸入提供給程序需要的輸入來實現交互程序執行。甚至可以實現實現簡單的BBS聊天機器人。 :)
Expect是不斷發展的,隨著時間的流逝,其功能越來越強大,已經成為系統管理員的的一個強大助手。Expect需要Tcl編程語言的支持,要在系統上運行Expect必須首先安裝Tcl。
二、Expect工作原理
從最簡單的層次來說,Expect的工作方式象一個通用化的Chat腳本工具。Chat腳本最早用于UUCP網絡內,以用來實現計算機之間需要建立連接時進行特定的登錄會話的自動化。
Chat腳本由一系列expect-send對組成:expect等待輸出中輸出特定的字符,通常是一個提示符,然后發送特定的響應。例如下面的 Chat腳本實現等待標準輸出出現Login:字符串,然后發送somebody作為用戶名;然后等待Password:提示符,并發出響應 sillyme。
引用:Login: somebody Password: sillyme
這個腳本用來實現一個登錄過程,并用特定的用戶名和密碼實現登錄。
Expect最簡單的腳本操作模式本質上和Chat腳本工作模式是一樣的。
三、一個例子:
#!/usr/bin/expect -f set ip [lindex $argv 0 ] //接收第一個參數,并設置IP set password [lindex $argv 1 ] //接收第二個參數,并設置密碼 set timeout 10 //設置超時時間 spawn ssh root@$ip //發送ssh請 主站蜘蛛池模板: 东乡县| 浠水县| 芜湖市| 千阳县| 堆龙德庆县| 微山县| 保亭| 聂荣县| 淮安市| 哈密市| 柯坪县| 建水县| 清河县| 靖边县| 冕宁县| 西林县| 宕昌县| 盘山县| 陵川县| 永城市| 仲巴县| 阿坝县| 山阳县| 朝阳区| 双江| 中阳县| 无极县| 阳山县| 皮山县| 北票市| 高台县| 乐平市| 合作市| 平利县| 若尔盖县| 南部县| 龙岩市| 上蔡县| 鄄城县| 马龙县| 阿坝县|