zoukankan      html  css  js  c++  java
  • MAC下使用expect先登录跳板机再登录远程服务器

    mac使用ssh远程连接服务器没有保存密码的功能,后来使用脚本写了一个读取密码然后自动登录的功能,用着挺好。但是最近公司为了安全起见,不再让直接连接测试服务器,必须先登录跳板机,再通过跳板机登录测试服务器.....每次要输两次密码,好麻烦的说。
    为了不这么麻烦,在网上搜了一下如何使用脚本直接登录,结果如下:

    //首先MAC要安装expect( brew install expect),然后,编写下面的脚本文件保存
    #!/usr/bin/expect -f
    #设置超时时间
    set timeout 3
    #这里设置了跳板机的密码
    set password "你的跳板机密码"
    #连接跳板机
    spawn ssh 用户名@跳板机IP
    
    #如果返回的内容包含*yes/no*,发送yes
    expect "*yes/no*" {send "yes
    "}
    #如果返回的内容包含"*password*",发送你设置的密码+
    (PS.这里的
    一定要加,是回车操作的意思。。。在网上搜了好多没有说明,一直以为是换行,没有加这个,结果一直执行不成功)
    expect "*password:*" {send "$password
    ;"}
    #登录跳板机成功,如果返回的内容包含"*你的跳板机的名称*",发送连接测试机的命令
    expect "*能匹配跳板机名称的字符串*" {send "ssh 测试服务器的用户名@测试服务的IP
    ";}
    #同上面一样。。。注意interact是留在测试机上,给用户控制权限,如果不写会直接退出
    expect "*password:*" {send "你的密码
    ";interact}
    #保存为 login.sh 执行 expect login.sh
    #终于不用手输两次密码了.....

    在iterm2中设置登录命令为1中的脚本,用command+o的方式呼出profiles,点击Edit Profiles,按照下图的方式配好后,双击可以图1中的列表即可自动登录

     

  • 相关阅读:
    Kotlin 学习笔记(一)
    Android 中调用本地命令
    Android 6.0 中的 Wifi 连接
    Android 中的广播机制
    面向对象之继承和多态
    2016 年秋季助教总结
    2016 年年志
    C 语言学习 第12次作业总结
    程序员编程艺术第三十六~三十七章、搜索智能提示suggestion,附近点搜索
    程序员编程艺术第三十四~三十五章:格子取数问题,完美洗牌算法
  • 原文地址:https://www.cnblogs.com/gujiande/p/10050296.html
Copyright © 2011-2022 走看看