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

最近工做中須要使用ssh鏈接到centos服務器中,之前公司都是直接配的私鑰就能夠免密登陸了。這裏還用的密碼。編程

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

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

我把主要的腳本貼一下ssh

#!/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配置spa

602973-20190412174535680-1665646625.png)

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

/usr/local/bin/zc_168.sh 22 root 172.10.100.109 'abcd""' //若是密碼裏面有特殊的串,最好用引號引發來

而後就能夠執行選擇pfofiles相應的item就能夠直接登陸了。密碼做了保存blog

相關文章
相關標籤/搜索