MAC下使用expect先登錄跳板機再登錄遠程服務器


mac使用ssh遠程連接服務器沒有保存密碼的功能,后來使用腳本寫了一個讀取密碼然后自動登錄的功能,用着挺好。但是最近公司為了安全起見,不再讓直接連接測試服務器,必須先登錄跳板機,再通過跳板機登錄測試服務器.....每次要輸兩次密碼,好麻煩的說。
為了不這么麻煩,在網上搜了一下如何使用腳本直接登錄,結果如下:

//首先MAC要安裝expect( brew install expect),然后,編寫下面的腳本文件保存
#!/usr/bin/expect -f
#設置超時時間
set timeout 3
#這里設置了跳板機的密碼
set password "你的跳板機密碼"
#連接跳板機
spawn ssh 用戶名@跳板機IP

#如果返回的內容包含*yes/no*,發送yes
expect "*yes/no*" {send "yes\n"}
#如果返回的內容包含"*password*",發送你設置的密碼+\r(PS.這里的\r一定要加,是回車操作的意思。。。在網上搜了好多沒有說明,一直以為是換行,沒有加這個,結果一直執行不成功)
expect "*password:*" {send "$password\r;"}
#登錄跳板機成功,如果返回的內容包含"*你的跳板機的名稱*",發送連接測試機的命令
expect "*能匹配跳板機名稱的字符串*" {send "ssh 測試服務器的用戶名@測試服務的IP\r";}
#同上面一樣。。。注意interact是留在測試機上,給用戶控制權限,如果不寫會直接退出
expect "*password:*" {send "你的密碼\r";interact}
#保存為 login.sh 執行 expect login.sh
#終於不用手輸兩次密碼了.....

在iterm2中設置登錄命令為1中的腳本,用command+o的方式呼出profiles,點擊Edit Profiles,按照下圖的方式配好后,雙擊可以圖1中的列表即可自動登錄

 

 


免責聲明!

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



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