expect腳本的簡單應用

expect是一個用來處理交互的命令。藉助於expect我們可以把交互過程寫在一個腳本上,使之自動化完成。

expect最核心的四個命令:

send:用於向進程發送字符串
except:從進程接收字符串
spawn:打開一個新的進程
interact:保持交互的狀態

首先一個簡單的腳本:

#!/usr/bin/expect            #定義解釋器和shell一樣
set user [lindex $argv 0]    #定義變量
set host [lindex $argv 1]    # 
set passwd "8023jun12"
spawn ssh $user@$host         #打開一個ssh進程
expect "password:"            #捕捉到“password:"字符串時,調用send發送字符串
send "$passwd\r"
interact                     #ssh登錄後保持登錄狀態,若沒有此語句腳本執行完之後就會返回

執行腳本:

[root@slave expect]# ./1.sh root 192.168.1.120
spawn ssh [email protected]
[email protected]'s password: 
Last login: Tue Dec 27 07:27:07 2016 from slave
[root@master ~]#

可以設置超時時間:

set timeout 100:設置超時時間爲100秒,如果要執行的shell命令很長可以設置超時時間長一些。expect超過超時時間沒有監測到要找的字符串,則不執行,默認timeout爲10秒

expect的命令行參數

[lindex $argv n]獲得index爲n的參數(index從0開始計算)
$argc爲命令行參數的個數
[lrange $argv 0 0]表示第一個參數
[lrange $argv 0 3]表示第1到第3個參數


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章