mac中使用expect腳本,讓iTerms保存密碼登錄ssh


最近工作中需要使用ssh連接到centos服務器中,以前公司都是直接配的私鑰就可以免密登錄了。這里還用的密碼。

由於,我一直用的是iTerm2,所以在網上搜索了下,找到了一種方案,那就是expect腳本。看了下,系統還自帶了,不用再安裝了

expect是一個免費的編程工具,用來實現自動的交互式任務,而無需人為干預。說白了,expect就是一套用來實現自動交互功能的軟件。

我把主要的腳本貼一下

#!/usr/bin/expect
set timeout 30
spawn ssh -p [lindex $argv 0] [lindex $argv 1]@[lindex $argv 2]
expect {
        "(yes/no)?"
        {send "yes\n";exp_continue}
        "password:"
        {send "[lindex $argv 3]\n"}
}
interact

以上的set, spawn,expect都是expect的主要命令.
上面腳本的主要意思就是開啟一個新的進程啟動ssh,然后作為 ssh 的接受參數
當出現交互時,直接發送send交互命令,整個過程完全是自動化的,不需要人工操作。

spawn 	新建一個進程,這個進程的交互由expect控制
expect  等待接受進程返回的字符串,直到超時時間,根據規則決定下一步操作
send    發送字符串給expect控制的進程
set     設定變量為某個值
exp_continue 重新執行expect命令分支
lindex $argv 0 ...99 這些是接受參數

將上面的腳本放到任意目錄下,但必須具有執行權限。然后在iTerms的profiles配置

602973-20190412174535680-1665646625.png)

主要是Send text at start這里配置你的expect腳本路徑和對應的參數,如:


/usr/local/bin/zc_168.sh 22 root 172.10.100.109 'abcd""' //如果密碼里面有特殊的串,最好用引號引起來

然后就可以執行選擇pfofiles相應的item就可以直接登錄了。密碼作了保存


免責聲明!

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



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