首页 > 代码库 > ssh远程登陆脚本(带跳板机)

ssh远程登陆脚本(带跳板机)

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填入刚刚准备好的脚本的路径。

技术分享

 

ssh远程登陆脚本(带跳板机)