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
    #终于不用手输两次密码了.....
  • 相关阅读:
    ArrayList和HashTable妙用一
    面向过程,面向对象的深入理解一
    jquery中限制部分字段不能输入
    MySql用int存储时间
    android绑定sqlite数据库与程序一起发布
    extjs 4和jquery整合
    jQuery.support 的实现方式
    常用JavaScripts方法
    SVN错误信息大全
    android封装的menu自定义菜单列表
  • 原文地址:https://www.cnblogs.com/bonelee/p/7817371.html
Copyright © 2011-2022 走看看