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

原文地址:https://www.cnblogs.com/hongfeng2019/p/11970270.html