1. 程式人生 > >Linux下通過EXPECT指令碼自動執行ssh遠端連線

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

++++++++++++++++++++++++++++++++++++++++++++++

相關文章: