我想寫一個期望腳本,將ssh放入服務器,發送sudo su,然後檢查iptables狀態並將輸出放在服務器上的日誌文件中。以下是腳本。期望腳本ssh返回無效的命令名
1 #!/usr/bin/expect
2 exp_internal 1
3 log_user 0
4 set timeout 10
5 set password "******"
6
7 spawn /usr/bin/ssh -l subhasish *.*.*.* -p 10022
8
9 expect {
10 -re "password: " {send "$password\r"}
11 -re "$ " {send "sudo su\r"}
12 -re "[sudo] password for subhasish:" {send "$password\r"}
13 -re "# " {send "service iptables status\r"}
14 }
15 set output $expect_out(buffer)
16 send "exit\r"
17 puts "$output\r\n" >> output.log
但是,雖然在調試模式下運行,我得到這樣的錯誤;
expect -d testcase
expect version 5.44.1.15
argv[0] = expect argv[1] = -d argv[2] = testcase
set argc 0
set argv0 "testcase"
set argv ""
executing commands from command file testcase
parent: waiting for sync byte
parent: telling child to go ahead
parent: now unsynchronized from child
spawn: returns {24105}
invalid command name "sudo"
while executing
"sudo"
invoked from within
"expect {
-re "password: " {send "$password\r"}
-re "$ " {send "sudo su\r"}
-re "[sudo] password for subhasish:" {send "$password\r"}
..."
(file "testcase" line 9)
不知道我哪裏出錯了。它說無效的命令名稱「sudo」,我想這是因爲期望沒有理解這些命令。如何繞過它。請幫忙。謝謝。
我已將sudo su期望更改爲「subhasish的密碼:」以及您如何提及,無論是否正在運行;使用更新後的代碼, #!/ usr/bin/expect -f #! /斌/慶典 設定超時60 LOG_USER 1個 組主機*。*。*。* 設置密碼****** 組用戶subhasish 集日誌文件output.txt的 產卵的ssh -p 10022 $用戶名@ $主機01期望 「* assword:*?」 送 - 「$密碼\ R」 LOG_USER 1 期望 「$」 發送 - 「須藤蘇\ R」 期望 「密碼subhasish:」 發送 - - 「$ password \ r」 expect「#」 send - 「service iptables status \ r」 log_file /home/subhasish/output.log expect「#」 log_file send - 「exit \ r」; send - 「exit \ r」; 退出0 – 2013-04-29 13:04:00
手動日誌記錄看起來像這樣,[root @ localhost subhasish]#ssh -p 10022 [email protected]*.*.*.* [email protected]*.*.*.*的密碼: 上次登錄時間:週一Apr 29 07:19:52 2013 from *。*。*。* [subhasish @ testhost〜] $ sudo的蘇 [須藤]密碼subhasish: [根@ testhost subhasish]# – 2013-04-29 13:09:21
調試腳本顯示了其被陷在期待: 期待:做「\ r \ n上次登錄:星期一4月29日07:35:36來自*。*。*。* \ r \ r \ n \ u001b] 0; subhasish @ testhost:〜\ u0007「(spawn_id exp4)匹配glob模式」密碼爲subhasish:「?沒有 [subhasish @ testhost〜] $ expect:是「\ r \ nLast login:Mon Apr 29 07:35:36 2013 from *。*。*。* \ r \ r \ n \ u001b] 0; subhasish @ testhost:〜\ u0007 \ u001b [?1034h [subhasish @ testhost〜] $「(spawn_id exp4)匹配glob模式」subhasish的密碼:「? no – 2013-04-29 13:13:22