expect 交互


expect 是一個交互語言,用來實現自動和交互式任務進行通信,無需人的手工干預
例如密碼交互

expect 通過 spawn 啟動進程 -》 expect 獲取期待關鍵字 -》 send 向進程發送字符串

下面是一個簡單的交互案例
 1 #!/usr/bin/expect -re
 2 set timeout -1 
 3 set USERNAME %(userName)s
 4 set PASSWORD %(password)s
 5 
 6 spawn %(svn_commend)s
 7 
 8 expect {
 9  -re "sername" {exp_send "$USERNAME\r"; exp_continue}
10  -re "yes/no" {exp_send "no\r"; }
11  -re "Password for" {exp_send "$PASSWORD\r"; exp_continue}
12 }
13 expect eof 
14 exit
1. #!/usr/bin/expect -re
告訴操作系統腳本里的代碼使用那一個shell來執
-re 表示啟用正則表達匹配

2. set timeout -1
設置超時時長 -1 代表永不過期

3. exp_continue
表示循環匹配。匹配到改關鍵字后繼續從頭開始匹配。例如安裝軟件時需要輸入多個 yes

4. expect eof
匹配結尾 例如執行命令結束時則可以匹配到 eof

5. exit、interact
exit交互結束退出。 interact表示執行完后保持交互狀態,把控制權交給控制台,這個時候就可以手工操作了

6. exp_send/send
都是想程序發送字符串,有啥區別還沒找到
7. send_user
send_user 命令用來把后面的參數輸出到標准輸出中去,默人的send、exp_send 命令都是將參數輸出到程序中去的,
8.如何使用
mac 上直接使用 ./XX.sh 執行上述腳本不行。需要使用 expect XX.sh 才能正確執行

9.調試
expect -d XX.sh輸出每次執行的過程可以用於編寫腳本時調試之用






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM