linux中expect的介紹與使用示例
一、概述
我們通過Shell可以實現(xiàn)簡單的控制流功能,如:循環(huán)、判斷等。但是對于需要交互的場合則必須通過人工來干預,有時候我們可能會需要實現(xiàn)和交互程序如telnet服務器等進行交互的功能。而Expect就使用來實現(xiàn)這種功能的工具。
Expect是一個免費的編程工具語言,用來實現(xiàn)自動和交互式任務進行通信,而無需人的干預。Expect的作者Don Libes在1990年 開始編寫Expect時對Expect做有如下定義:Expect是一個用來實現(xiàn)自動交互功能的軟件套件 (Expect [is a] software suite for automating interactive tools)。使用它系統(tǒng)管理員 的可以創(chuàng)建腳本用來實現(xiàn)對命令或程序提供輸入,而這些命令和程序是期望從終端(terminal)得到輸入,一般來說這些輸入都需要手工輸入進行的。 Expect則可以根據(jù)程序的提示模擬標準輸入提供給程序需要的輸入來實現(xiàn)交互程序執(zhí)行。甚至可以實現(xiàn)實現(xiàn)簡單的BBS聊天機器人。 :)
Expect是不斷發(fā)展的,隨著時間的流逝,其功能越來越強大,已經(jīng)成為系統(tǒng)管理員的的一個強大助手。Expect需要Tcl編程語言的支持,要在系統(tǒng)上運行Expect必須首先安裝Tcl。
二、Expect工作原理
從最簡單的層次來說,Expect的工作方式象一個通用化的Chat腳本工具。Chat腳本最早用于UUCP網(wǎng)絡內(nèi),以用來實現(xiàn)計算機之間需要建立連接時進行特定的登錄會話的自動化。
Chat腳本由一系列expect-send對組成:expect等待輸出中輸出特定的字符,通常是一個提示符,然后發(fā)送特定的響應。例如下面的 Chat腳本實現(xiàn)等待標準輸出出現(xiàn)Login:字符串,然后發(fā)送somebody作為用戶名;然后等待Password:提示符,并發(fā)出響應 sillyme。
引用:Login: somebody Password: sillyme
這個腳本用來實現(xiàn)一個登錄過程,并用特定的用戶名和密碼實現(xiàn)登錄。
Expect最簡單的腳本操作模式本質上和Chat腳本工作模式是一樣的。
三、一個例子:
#!/usr/bin/expect -f set ip [lindex $argv 0 ] //接收第一個參數(shù),并設置IP set password [lindex $argv 1 ] //接收第二個參數(shù),并設置密碼 set timeout 10 //設置超時時間 spawn ssh root@$ip //發(fā)送ssh請滶 expect { //返回信息匹配 "*yes/no" { send "yes\r"; exp_continue} //第一次ssh連接會提示yes/no,繼續(xù) "*password:" { send "$password\r" } //出現(xiàn)密碼提示,發(fā)送密碼 } interact //交互模式,用戶會停留在遠程服務器上面.
運行結果:
root@ubuntu:/home/zhangy# ./test.exp 192.168.1.130 admin spawn ssh root@192.168.1.130 Last login: Fri Sep 7 10:47:43 2012 from 192.168.1.142 [root@linux ~]#
總結
以上就是關于linux下使用expect示例的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。
相關文章
apache使用日志分割模塊rotatelogs分割日志詳解
本文介紹了apache使用自帶的日志分割模塊rotatelogs分割日志,rotatelogs 是 Apache 2.2 中自帶的管道日志程序,具體使用方法請參考下文2014-01-01ubuntu下的虛擬環(huán)境中安裝Django的操作方法
這篇文章主要介紹了ubuntu下的虛擬環(huán)境中安裝Django的操作方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-09-09linux 上在指定時間段內(nèi)每隔多少分鐘自動執(zhí)行任務計劃crontab
這篇文章主要介紹了linux 上在指定時間段內(nèi)每隔多少分鐘自動執(zhí)行任務計劃crontab,需要的朋友可以參考下2019-11-11Unix/Linux系統(tǒng)下的nobody用戶與nologin詳細介紹
linux系統(tǒng)下的nobody用戶是什么用戶,nologin又是什么?本文為大家詳細介紹了這兩個no字輩2018-10-10