昨天廖老師讓嘗試使用ssh指令碼進行遠端控制,但是這個東西需要手動去輸入密碼,不能放到後台去執行,於是就考慮有沒有辦法讓他自動輸入密碼呢,經過查閱。最終發現了expect這個東西,很強大的東西,所以我就在本地測試了下,最終實現了不用手動輸入密碼也可以進行遠端連線。
不僅在ssh
連線中可以用到,以後任何需要輸入密碼或者輸入命令的,都可以,不僅保持了該軟體的安全保密性又實現了智慧型性。
拿來與大家分享.
要使用expect
需要預先安裝
tcl這個東西
,然後再安裝
expect包.
我這裡使用的是
tcl8.4.13-src.tar.gz
和expect-5.43.0.tar.gz
的安裝包
./home
目錄下:
安裝
tcl和
expect
#tar zxvf tcl8.4.3-src.tar.gz
#cd tcl8.4.13
#./configure && make && make install
#cp tclunixport.h
../generic/
#tar zxvf expect-5.43.0.tar.gz
#cd expect-5.43/
#./configure --with-tcl=/usr/local/lib/
--with-tclinclude=/
/home/tcl8.4.11/generic/
--with-x=no
#make && make install
介紹幾個命令的含義:
1. send
用來傳送乙個字串,比如
send "hello world"
。初始情況下,這個字串會傳送到標準輸出。如果你用的是
max osx
或者linux
,可以在
terminal
下直接輸入
expect
命令並回車,就進入了
expect
互動環境,此時,輸入
send "hello world"
就可以看到結果。
一旦你的程式已經與其他程式進行互動,字串就會被傳送到其他程式那裡。如上面的例子指令碼中,我們呼叫
send 」$password/r"
就是把密碼傳送給
ssh連線的伺服器端指定埠。
2. expect
與
send
相反,expect
用來等待你所期望的字串。比如
expect "hello"。在
expect
後面跟的字串中,你可以指定乙個正規表示式。
expect
會一直等待下去,除非收到的字串與預期的格式匹配,或者到了超期時間。
3. spawn
spawn
用來啟動乙個新的程序,比如上面的
spawn ssh -d $port $user@$host
,expect
會執行命令
「ssh -d $port $user@$host」
。在互動式的場景中,當你輸入命令後,可能伺服器端會返回一些操作提示符,以讓你輸入命令。
expect
提供了這樣三個常用的命令,
spawn, expect
和send
,恰好滿足這種需要。把它們結合起來使用,可以實現很多簡單的自動化指令碼。
其它常用的命令還有:
interact
,比如你通過指令碼自動連線到了某個
ftp,並輸入了使用者名稱密碼,此時需要人工輸入一些命令,就可以使用
interact
命令,它會把指令碼的控制權交給使用者;
sleep
,等待多少秒等等。
由於expect
是從tcl
繼承下來的,所以也支援
tcl的語法和命令,比如變數宣告、流程控制等等。
ok,tcl以及expect已經安裝完成了.下面給出scp的乙個expect很簡單的乙個指令碼
乙個簡單的小例子:
#!/usr/local/bin/expect -f
set user root
set host 172.20.10.200
set password 111111
set timeout -1
spawn ssh$user@$host
expect "*password:*"
send "$password/r"
expect eof
SSH自動登入,需安裝expect包
usr bin expect set timeout 30 spawn ssh l root 192.168.1.117 expect password send nopasswd r interact set timeout 30 設定超時時間的,計時單位 秒 spawn ssh l root 1...
Python 自動連線ssh
usr bin python coding utf 8 import sys,time,os try import pexpect except importerror print you must install pexpect module sys.exit 1 addr map try key...
python pexpect 自動連線ssh
使用python pexpect 1.首先是安裝 前提是python2.5以上你已經安裝好了 tar xzvf pexpect 2.1.orig.tar.gz cd pexpect 2.1 python setup.py install 沒許可權時,記得sudo 3.編寫linkssh.py usr...