Linux下通過EXPECT指令碼自動執行ssh遠端連線
由於經常需要從家裡連到實驗室的機器,但是中間需要一箇中轉,於是就需要連續兩次進行ssh操作以及輸入密碼。加上家裡網路不穩,經常會斷,就又得重新登入。輸入那麼一長串的東西特別麻煩。於是覺得應該寫一個指令碼來自動登入,這樣就可以帶來極大的方便。
1 expect程式
用的Ubuntu,本身沒帶expect,安裝。
sudo apt-get install expect
2 寫指令碼 sample.script
下面是簡單的一個例子,把登入名和密碼都顯式地寫在腳本里。
上面的指令碼中,spawn命令啟用一個Unix程式來進行互動式的執行。send命令向程序傳送字串。expect命令等待程序的某些字串。expect支援正規表示式並能同時等待多個字串,並對每一個字串執行不同的操作。expect還能理解一些特殊情況,如超時和遇到檔案尾。
如果希望指令碼有一定的通用性,比如通過引數方式來輸入使用者名稱和主機地址。那麼指令碼可以象這樣:
這樣執行的時候$argv 0 就是輸入的第一個引數, $argv 1 就是輸入的第二個引數
3 給指令碼加上可執行許可權
chmod +x sample.script
如果檔案預設有其它許可權,建議最好設定為只能自己讀取,修改和執行
chmod 700 sample.script
接著就可以通過執行指令碼進行遠端登入了 ./sample.script
有不解的地方可以參考以下資料
-----------------------------------------------------------------------------------------------
參考資料:
1
expect中文教程
2
3
++++++++++++++++++++++++++++++++++++++++++++++
相關文章: