本文主要使用expect來進行linux進行自動交互。
- 安裝
expect需要tcl語言的支持,所以需要先安裝tcl
下載:wget http://nchc.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gz
解壓:tar -xzvf tcl8.4.11-src.tar.gz
配置:cd tcl8.4.11/unix && ./configure --prefix=/usr/tcl --enable-shared && make &&make install
拷貝:安裝完畢以後,將目錄unix下面的tclUnixPort.h copy到tcl8.4.11 目錄下的generic目錄中
expect下載與安裝
下載:wget http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz
解壓:tar -xzvf expect5.45.tar.gz
配置:cd expect5.45
安裝:./configure --prefix=/usr/expect --with-tcl=/usr/tcl/lib --with-tclinclude=../tcl8.4.11/generic && make && make install
創建軟鏈接
ln -s /usr/expect/bin/expect /usr/bin/expect
然後就可以使用了例如 yum install g++ expect -y
或者下面的腳本
#!/usr/bin/expect
#set timeout 20 #設置超時時間
spawn ssh [email protected]
expect "*password:"
send "root"
# expect "*#"
interact
解釋:
1.#!/usr/bin/expect :需要先安裝軟件,然後來說明用expect來執行
2.spawn ssh [email protected] :spawn是進入expect環境後纔可以執行的expect內部命令,用來執行它後面的命令。
3.expect “*password:” :也是expect的內部命令,用來解惑關鍵的字符串,如果有,就會立即返回下面設置的內容,如果沒有就看是否設置了超時時間。
4.send “root”:這時執行交互式動作,與手工輸入密碼等效,在expect截獲關鍵字之後,它就會輸入send後面的內容。
5.interact :執行完畢後把持交互狀態,把控制檯,這時候就可以進行你想要進行的操作了。如果沒有這一句,在登陸完成之後就會退出,而不是留在遠程終端上。