zoukankan      html  css  js  c++  java
  • ssh跳板登陆太麻烦,使用expect每次自动登录 利用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
    #终于不用手输两次密码了.....
    首先MAC要安装expect( brew install expect),然后,编写上面的脚本文件保存,
    保存为 login.sh 执行 expect login.sh

    终于不用手输两次密码了.....
    
    

     防止超时掉线的代码:

    #!/usr/bin/expect -f
    #首先MAC要安装expect( brew install expect),然后,编写下面的脚本文件保存
    #设置超时时间
    set timeout 1
    #这里设置了跳板机的密码
    set password "xxxxxx"
    #连接跳板机
    spawn ssh xxx
    
    #如果返回的内容包含*yes/no*,发送yes
    expect "*yes/no*" {send "yes
    "}
    #如果返回的内容包含"*password*",发送你设置的密码+
    (PS.这里的
    一定要加,是回车操作的意思。。。在网上搜了好多没有说明,一直以为是>换行,没有加这个,结果一直执行不成功)
    expect "*word:*" {send "$password
    ;"}
    #登录跳板机成功,如果返回的内容包含"*你的跳板机的名称*",发送连接测试机的命令
    expect "*login*" {send "ssh xxxt@xxxxx
    ";}
    #同上面一样。。。注意interact是留在测试机上,给用户控制权限,如果不写会直接退出
    expect "*word:*" {send "$password
    ";
        #interact}
        interact {
            timeout 30 {send "x20"}
        }
    }
    #保存为 login.sh 执行 expect login.sh
    #终于不用手输两次密码了.....
  • 相关阅读:
    利用递归分割(Split)字符串
    SQL Server2012 T-SQL基础教程--读书笔记(1-4章)
    kindeditor编辑器的使用
    echarts绘制四川地图
    Windows下搭建PHP开发环境(Apache+PHP+MySQL)+调试工具Xdebug的配置
    给搜索关键字添加高亮,加以颜色区分
    SQL 生成6位随机数并MD5加密输出
    微信小程序登录 .net 后端实现
    钉钉小程序http post 请求
    浅谈Web Api配合SignalR的跨域支持
  • 原文地址:https://www.cnblogs.com/bonelee/p/7817371.html
Copyright © 2011-2022 走看看