expect批量修改密碼

wang_0720發表於2013-11-06
在工作過程中經常需要批量對多臺機器進行操作,如果每臺都手動操作那效率實在是太低了。這時就需要一種自動互動的方式對若干臺機器進行批量處理,expect就扮演著這樣一種角色。本文以批量修改密碼為例淺談expect的用法。Expect需要Tcl程式語言的支援,首先需要確定機器安裝有expect,tcl。
[root@rac1 scripts]# rpm -qa|grep tcl
tcl-8.4.13-4.el5
tclx-8.4.0-5.fc6
[root@rac1 scripts]# rpm -qa|grep expect
expectk-5.43.0-5.1
expect-devel-5.43.0-5.1
expect-5.43.0-5.1
以上顯示說明該機器裝有expect和tcl
以下是批量修改密碼指令碼
用whereis expect確定expect位置
[root@rac1 ~]# whereis expect
expect: /usr/bin/expect

#!/usr/bin/expect
#設定變數
set timeout 10
set USERNAME etnet
set PASSWORD 123456
#一個迴圈,說明對哪些機器進行操作
foreach host {
192.168.151.89
192.168.151.90
} {
spawn ssh 
-l root ${host}
#ssh首次登陸的驗證,exp_continue會繼續執行下一迴圈
expect {
        "no)?" {send "yes\r";exp_continue}
        "password:" {send "123456\r"}
}
#每個expect捕獲一個提示符,send傳送一條命令,命令以\r結尾。
expect "]*"
send "passwd ${USERNAME}\r"
expect "password:"
send "${PASSWORD}\r"
expect "password:"
send "${PASSWORD}\r"
expect "]*"
send "exit\r"
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27181165/viewspace-775806/,如需轉載,請註明出處,否則將追究法律責任。

相關文章