最近工做中须要使用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