最近工做中須要使用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
主要是Send text at start這裏配置你的expect腳本路徑和對應的參數,如:code
/usr/local/bin/zc_168.sh 22 root 172.10.100.109 'abcd""' //若是密碼裏面有特殊的串,最好用引號引發來
而後就能夠執行選擇pfofiles相應的item就能夠直接登陸了。密碼做了保存blog