linux 下使用expect編寫shell 腳本交互訪問遠程服務器

使用命令行登陸遠程服務器一般需要ip地址以及登陸密碼等,每次都手動輸很不方便,expect可以滿足自動輸入密碼。下面是詳細的介紹:


首先安裝expect:

我用的是ubuntu14.04,使用sudo apt-get install expect即可安裝

然後使用which expect 來查看expert的路徑,我的路徑是/usr/bin/expect

然後編寫腳本:

198.175.102.32:10000 爲例,賬號爲Team002,密碼爲××××××

使用vim connect.sh 新建腳本

下面是shell腳本的代碼:

#!/usr/bin/expect
set timeout 30
spawn ssh Team002@198.175.102.32 -p 10000
expect "password:"
send "××××××\r"
interact

然後修改權限:

保存退出,使用sudo chmod +x connect.sh 將connect.sh文件變爲可執行文件>

下面運行腳本:

使用./connect.sh即可運行,運行結果見下圖:

這裏寫圖片描述

可以看到,這裏自動連接服務器並輸入密碼,登陸成功

最後是代碼的介紹

第一行#!/usr/bin/expect中的/usr/bin/expectwhich expect之後的路徑

第二行set timeout 30是設置第四行等待時間最長爲30s

第三行spawn ssh [email protected] -p 10000是使用spawn來執行ssh [email protected] -p 10000這條命令,其中Team002是賬號,198.175.102.32爲IP地址,10000爲端口號

第四行expect "password:"是等待終端輸出中的字符串中是否包含password:,如果包含,執行下一行,否則等待超過第二行設置的30s之後繼續執行下一行

第五行send "××××××\r"用來實現自動輸入密碼,示例密碼爲xxxxxx

最後一行interactr"的作用是執行完成後保持交互狀態,把控制權交給控制檯,這個時候就可以手工操作了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章