• autossh


    LDAP:用old HK login

    SSH转发:
    /root/.nat_rules/opay-new

    root@ldap opay-new]# cat maria1-dw-60000
    #!/bin/bash
    L_PORT="60000"
    R_HOST="opay-transaction-slave-dw.c7vkdm90b2v9.eu-west-1.rds.amazonaws.com"
    R_PRI_PORT="3306"
    MON_PORT="0"
    ALIAS="newstage"

    VAR=$(expect -c "
    spawn /usr/bin/autossh -M $MON_PORT -4 -C -L 0.0.0.0:$L_PORT:$R_HOST:$R_PRI_PORT -N $ALIAS
    match_max 100000
    expect "$?assphrase*"
    send -- "$PASS "
    send -- " "
    expect eof
    ")
    echo "======================="
    echo "$VAR"

    /usr/bin/autossh -M 0 -4 -C -L 0.0.0.0:60000:ip:3306 -N $ALIAS

    expect使用说明: 

    参考:https://www.cnblogs.com/bonelee/p/7817371.html

    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
    #终于不用手输两次密码了.....
    复制代码

  • 相关阅读:
    窗体间传值
    winform 导出datagridview 到excel
    单击单元格任意地方事件
    CLR via 随书笔记
    值类型和引用类型的区别
    System.Object简介
    装箱与拆箱
    静态类
    关于Linq2Sql有外键表的更新引发的问题。
    滑动切换页面
  • 原文地址:https://www.cnblogs.com/hongfeng2019/p/11970270.html
Copyright © 2020-2023  润新知