Expect是在Tcl的基礎上創建的,可以用來做一些Linux下無法做到交互的命令操作,可用於遠程管理服務器。
一、安裝Tcl:
1.下載源碼包:
wget http://nchc.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gz
2.解壓縮源碼包:
tar xfvz tcl8.4.11-src.tar.gz
3.編譯安裝:
cd tcl8.4.11/unix
./configure --prefix=/usr/tcl --enable-shared
make
make install
4.安裝完畢以后,進入tcl源代碼的根目錄,把子目錄unix下面的tclUnixPort.h copy到子目錄generic中。
二、安裝expect:
1.下載源碼包:
wget http://sourceforge.net/projects/expect/files/Expect/5.45/expect5.45.tar.gz/download
2.解壓源碼包:
tar xzvf expect5.45.tar.gz
3.安裝配置:
cd expect5.45
./configure --prefix=/usr/expect --with-tcl=/usr/tcl/lib --with-tclinclude=../tcl8.4.11/genericmake
make install
4.建立軟連接:
ln -s /usr/tcl/bin/expect /usr/expect/bin/expect
三、expect語法及示例:
set命令:可以設置變量。
spawn命令:激活一個Unix程序來進行交互式的運行。
send命令:向進程發送字符串。
expect命令:等待進程的某些字符串。expect支持正規表達式並能同時等待多個字符串,並對每一個字符串執行不同的操作。
interact命令:執行完畢把持交互狀態,然后在控制台繼續操作。如果沒有這一句,登陸之后就會退出,而不是留在終端上。
示例j腳本test.exp:
#!/usr/bin/expect
set HOST [192.168.11.11 $argv 0]
set PWD [123456 $argv 1]
spawn ssh root@$HOST
expect "*passwrod:"
send "$PWD\r"
expect "*#"
send "echo hello\r"
interact
修改權限:chmod 755 test.exp
執行:expect test.exp
————————————————
版權聲明:本文為CSDN博主「lishuzebobo」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u013181216/article/details/83055909