最近工作中需要使用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配置
主要是Send text at start這里配置你的expect腳本路徑和對應的參數,如:
/usr/local/bin/zc_168.sh 22 root 172.10.100.109 'abcd""' //如果密碼里面有特殊的串,最好用引號引起來
然后就可以執行選擇pfofiles相應的item就可以直接登錄了。密碼作了保存