發送新密碼後,我不斷收到錯誤消息。它會更改密碼,但不會執行腳本的其餘部分。任何想法爲什麼它保持錯誤。我爲一個不同的設備編寫了一個非常類似的腳本,它工作正常,但更改密碼後的內容在該設備上不需要。如果其餘部分未完成,此設備在重新啓動後不會保存密碼。通過ssh手動執行它工作得很好,所以它不是問題的cmd,它與腳本有關。期待腳本上的錯誤
#!/usr/bin/expect
set timeout -1
#Edit for User
set user user
#Edit for Old Password
set old oldpassword
#Edit for New Password
set new newpassword
#get IP List from iplist.txt
set f [open "/iplist.txt"]
set data [read $f]
close $f
foreach line [split $data \n] {
if {$line eq {}} continue
spawn ssh [email protected]$line
expect "assword:"
send "$old\r"
sleep 10
send "passwd $user\r"
expect "assword:"
send "$new\r"
expect "assword:"
send "$new\r"
sleep 10
send "grep -v users.1.password= /tmp/system.cfg > /tmp/system.cfg.new\r"
sleep 10
send "echo users.1.password=`grep $user /etc/passwd | awk -F: '{print \$2}'` >> /tmp/system.cfg.new\r"
sleep 10
send "cp /tmp/system.cfg.new /tmp/system.cfg\r"
sleep 10
send "save && reboot\r"
close
expect eof
}
完整的劇本是很多大與故障保險,如果設備不響應SSH或原始密碼是錯誤的。那一個不會工作,直到我找出這部分有什麼問題。我只是將其縮小以找出問題發生的位置。另外此行似乎是問題,因爲它才創建就行了system.config.new:
send "echo users.1.password=`grep $user /etc/passwd | awk -F: '{print \$2}'` >> /tmp/system.cfg.new\r"
這是和SSH工作原理是:
send "echo users.1.password=`grep $user /etc/passwd | awk -F: '{print $2}'` >> /tmp/system.cfg.new\r"
但發送由於2美元的錯誤,因此可以期望地看到。我被告知,放置一個\ $ 2將使它只能查看遠程shell。任何幫助都會很棒。
最初它期望「明星」而不是睡眠cmds。我一直在試用這個腳本中的大量東西,一旦我將它運行到我的完整腳本中。我使用睡眠的原因是因爲「明星」似乎不匹配輸出,並在第二次發送$ new/r時失敗。隨着睡眠,它已經變得更遠了。我確實有一個更正。它實際上是正確地發送「save & & reboot \ r」。我將最終從我的另一個問題中用你的$提示建議來代替睡眠,或期待「明星」。隨着這個調試是它引發錯誤:
send: sending "save && reboot\r" to { exp4 }
expect: spawn id exp4 not open
while executing
"expect eof"
("foreach" body line 21)
invoked from within
"foreach line [split $data \n] {
if {$line eq {}} continue
spawn ssh [email protected]$line
expect "assword:"
send "$old\r"
sleep 3
send "passwd $user\r"
e..."
(file "./ubnt.sh" line 15)
「保存& &重啓\ R」將踢出來的ssh連接它保存設置後,但它似乎並沒有那麼遠有愈演愈烈。是否有問題& &,也許我需要/ & &。
在每個'send'命令之後,'期待'提示符。沒有這些,你可以爲不請自來的客人騰出空間,例如這些錯誤。 – Dinesh
如果你可以看一下,在這個上增加了一些更多的信息。 –
我嘗試將保存並重新啓動爲2發送cmd,它將保存設置,但在發送重新引導cmd並且不重新啓動設備後發生錯誤。有什麼想法嗎? –