标签:语句 password open 一键 提示符 out 一行代码 脚本 准备
mac自带的终端不太好用,被推荐了一个iterm2的终端替代工具,确实比自带的终端好用不少。下面记录下通过脚本一键远程登录的过程:
下载地址:http://m4.pc6.com/xuh3/iTerm2.zip
首先,准备好登陆脚本
#!/usr/bin/expect -f set user xxx set host 127.0.0.1 set port 22 #如果是默认端口可以不指定 set password xxx set timeout -1 spawn ssh -p $port $user@$host expect "*assword:*" send "$password\r" expect "*xxx*" send "./brige\r" expect "*password*" send "xxx\r" expect "*xxx*" send "./login\r" expect "*password*" send "xxx\r" interact expect eof
这里解释一下: xxx都是用户名或者密码
很重要的一点,这里其实做了三个层次的登陆,要特别注意,登陆了第一层之后,就不可以直接用send语句或者spawn发送登陆命令了,至于为什么搞不懂,
现象是会卡在这一步,不会出现输入密码的提示符。
因此,从第二层机器开始,都要新建一个脚本,只需要一行代码: ssh user@host,就可以了,然后通过send ‘./login\r‘,通过send来发送执行这个登陆脚本等命令,这样就不会卡在那里。
当然,如果没有跳板机,只有一层登陆的话,就不需要这么麻烦了,直接通过spawn执行登陆命令即可。
然后这个expect命令解释一下,expect "*root*"表示等待出现带有root的提示符,否则阻塞在这一行,支持*通配符,因此这个可以自己定义。监听到出现了期望的字符串时,即继续执行下一行脚本。
最后一个要主意的就是最后两行
interact
expect eof
这两行一定不能少,放在最后就可以了。
准备好了脚本之后,iterm2的设置很简单。
Profiles->open profiles->Edit profiles
点击左下方的加号,新增一个链接,填一下name,然后下面选择command,command填入刚刚准备好的脚本的路径。
标签:语句 password open 一键 提示符 out 一行代码 脚本 准备
原文地址:http://www.cnblogs.com/xiaxiaosheng/p/6941851.html