zoukankan      html  css  js  c++  java
  • 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
    "
    
      expect "*xxx*"
      send "./brige
    "
      expect "*password*"
      send "xxx
    "
    
      expect "*xxx*"
      send "./login
    "
      expect "*password*"
      send "xxx
    "
    
      interact
      expect eof

    这里解释一下: xxx都是用户名或者密码

    很重要的一点,这里其实做了三个层次的登陆,要特别注意,登陆了第一层之后,就不可以直接用send语句或者spawn发送登陆命令了,至于为什么搞不懂,

    现象是会卡在这一步,不会出现输入密码的提示符。

    因此,从第二层机器开始,都要新建一个脚本,只需要一行代码: ssh user@host,就可以了,然后通过send './login ',通过send来发送执行这个登陆脚本等命令,这样就不会卡在那里。

    当然,如果没有跳板机,只有一层登陆的话,就不需要这么麻烦了,直接通过spawn执行登陆命令即可。

    然后这个expect命令解释一下,expect "*root*"表示等待出现带有root的提示符,否则阻塞在这一行,支持*通配符,因此这个可以自己定义。监听到出现了期望的字符串时,即继续执行下一行脚本。

    最后一个要主意的就是最后两行

    interact
    expect eof

    这两行一定不能少,放在最后就可以了。

    准备好了脚本之后,iterm2的设置很简单。

    Profiles->open profiles->Edit profiles

    点击左下方的加号,新增一个链接,填一下name,然后下面选择command,command填入刚刚准备好的脚本的路径。

  • 相关阅读:
    TCP/IP——何时用UDP代替TCP
    网络编程——客户/服务器程序设计范式
    各种常见英特网应用协议的使用情况和传输层三大协议的异同
    linux dd使用记录
    杂谈-为什么我们不要去外包公司
    小雪的成都
    哪个的情感
    mac上的git completion
    ue4 UE4Editor.lib找不到
    ue4 重新生成ide project文件的命令行
  • 原文地址:https://www.cnblogs.com/xiaxiaosheng/p/6941851.html
Copyright © 2011-2022 走看看