mac使用ssh遠(yuǎn)程連接服務(wù)器沒有保存密碼的功能融击,后來使用腳本寫了一個(gè)讀取密碼然后自動(dòng)登錄的功能嵌削,用著挺好。但是最近公司為了安全起見魄幕,不再讓直接連接測(cè)試服務(wù)器,必須先登錄跳板機(jī)颖杏,再通過跳板機(jī)登錄測(cè)試服務(wù)器.....每次要輸兩次密碼纯陨,好麻煩的說。
為了不這么麻煩输玷,在網(wǎng)上搜了一下如何使用腳本直接登錄队丝,結(jié)果如下:
//首先MAC要安裝expect( brew install expect),然后,編寫下面的腳本文件保存
#!/usr/bin/expect -f
#設(shè)置超時(shí)時(shí)間
set timeout 3
#這里設(shè)置了跳板機(jī)的密碼
set password "你的跳板機(jī)密碼"
#連接跳板機(jī)
spawn ssh 用戶名@跳板機(jī)IP
#如果返回的內(nèi)容包含*yes/no*,發(fā)送yes
expect "*yes/no*" {send "yes\n"}
#如果返回的內(nèi)容包含"*password*",發(fā)送你設(shè)置的密碼+\r(PS.這里的\r一定要加欲鹏,是回車操作的意思机久。。赔嚎。在網(wǎng)上搜了好多沒有說明膘盖,一直以為是換行,沒有加這個(gè)尤误,結(jié)果一直執(zhí)行不成功)
expect "*password:*" {send "$password\r;"}
#登錄跳板機(jī)成功侠畔,如果返回的內(nèi)容包含"*你的跳板機(jī)的名稱*",發(fā)送連接測(cè)試機(jī)的命令
expect "*能匹配跳板機(jī)名稱的字符串*" {send "ssh 測(cè)試服務(wù)器的用戶名@測(cè)試服務(wù)的IP\r";}
#同上面一樣。损晤。软棺。注意interact是留在測(cè)試機(jī)上,給用戶控制權(quán)限尤勋,如果不寫會(huì)直接退出
expect "*password:*" {send "你的密碼\r";interact}
#保存為 login.sh 執(zhí)行 expect login.sh
#終于不用手輸兩次密碼了.....
這里只簡(jiǎn)單寫一下喘落,具體expect是什么東東,大家自行百度谷歌了解吧--