交互式腳本,expect用法小結

       在編寫一些腳本時,有時候需要與計算機進行交互,比如ssh連接時輸入密碼,fdisk命令進行分區。這時候expect工具的強大和好用就體現出來了。

       使用expect工具前,先檢查是否安裝了expect包,安裝之後默認在/usr/bin/expect

#!/usr/bin/expect             #這個是使用expect工具的環境

set timeout  +數字      #設置超時時間,單位是秒

set  變量名 變量值 

set  變量名 [linedex $argv 0 ]     #意思是這個變量值從你執行腳本的後面第一個參數獲得

                                                 #argv 1 是第二個參數獲得,一次類推到9,如果是第十                                                  # 一個參數用 argv {10}

比如  ./test.sh  10                      #10 就是argv 0

spawn  commd                         #表示啓動一個名爲“commd”的命令,並由expect監控

expect  "***"                              #匹配某個爲“***”字符

send    "**\r"                             #如果匹配到,傳入**參數

interact                                     #交給控制檯控制  

expect eof                                #表示子程序的結束,如果交給控制檯控制,可以不加


處於初學shell腳本階段,這是一次小結。

附一段自己寫的分區腳本

#!/usr/bin/expect 
set dev [lindex $argv 0]
set num [lindex $argv 1]
spawn fdisk $dev 
expect "help):"
send "n\r"
expect "p):"
send "p\r"
expect "):"
send "$num\r"
expect "):"
send "\r"
expect "):"
send "+500M\r"
expect "help):"
send "p\r"
expect "help):"
send "wq\r"
interact

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