ssh遠程登陸腳本(帶跳板機)


mac自帶的終端不太好用,被推薦了一個iterm2的終端替代工具,確實比自帶的終端好用不少。下面記錄下通過腳本一鍵遠程登錄的過程:

下載地址:http://m4.pc6.com/xuh3/iTerm2.zip

 

首先,准備好登陸腳本

#!/usr/bin/expect -f
  set user xxx
  set host 127.0.0.1
  set port 22 #如果是默認端口可以不指定
  set password xxx
  set timeout -1

  spawn ssh -p $port $user@$host
  expect "*assword:*"
  send "$password\r"

  expect "*xxx*"
  send "./brige\r"
  expect "*password*"
  send "xxx\r"

  expect "*xxx*"
  send "./login\r"
  expect "*password*"
  send "xxx\r"

  interact
  expect eof

 

這里解釋一下: xxx都是用戶名或者密碼

很重要的一點,這里其實做了三個層次的登陸,要特別注意,登陸了第一層之后,就不可以直接用send語句或者spawn發送登陸命令了,至於為什么搞不懂,

現象是會卡在這一步,不會出現輸入密碼的提示符。

因此,從第二層機器開始,都要新建一個腳本,只需要一行代碼: ssh user@host,就可以了,然后通過send './login\r',通過send來發送執行這個登陸腳本等命令,這樣就不會卡在那里。

當然,如果沒有跳板機,只有一層登陸的話,就不需要這么麻煩了,直接通過spawn執行登陸命令即可。

然后這個expect命令解釋一下,expect "*root*"表示等待出現帶有root的提示符,否則阻塞在這一行,支持*通配符,因此這個可以自己定義。監聽到出現了期望的字符串時,即繼續執行下一行腳本。

最后一個要主意的就是最后兩行

interact
expect eof

這兩行一定不能少,放在最后就可以了。

准備好了腳本之后,iterm2的設置很簡單。

Profiles->open profiles->Edit profiles

點擊左下方的加號,新增一個鏈接,填一下name,然后下面選擇command,command填入剛剛准備好的腳本的路徑。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM