mac os iterm2 expect配置ssh自动登陆

iterm2终端

iterm2无疑是mac上最出色的终端(之一), 具有高自由度的配置以及亮丽的配色.: https://www.iterm2.com/
自动登陆服务器

  1 #!/usr/bin/expect
  2
  3 set timeout 1
  4 spawn ssh -p [lindex $argv 0] [lindex $argv 1]@[lindex $argv 2]
  5 expect {
  6         "*passphrase*"
  7         {send "[lindex $argv 3]\n"}
  8 }
  9
 10 expect {
 11         "*jumper*"
 12         {send "sh jump.sh\n"}
 13 }
 14 interact

代码解析:

#!/usr/bin/expect 

表示使用expect命名来执行脚本, 本质上和sh, bash是类似的命令

set timeout 1 

设定expect等待时间为1s, 如果超出该时间没有响应, 自动向下执行

spawn ssh -p [lindex $argv 0] [lindex $argv 1]@[lindex $argv 2] 

使用expect内置函数spawn执行命令, [lindex $argv *]表示获取系统参数, 并根据ssh命令进行构造, [lindex $argv 0]表示端口, [lindex $argv 1]表示用户名, [lindex $argv 2]表示目标机ip.

  5 expect {
  6         "*passphrase*"
  7         {send "[lindex $argv 3]\n"}
  8 }
  9
 10 expect {
 11         "*jumper*"
 12         {send "sh jump.sh\n"}
 13 }

主命令: 可以实现两次expect过程, 第一次表示跳转到跳板机, 第二次表示通过跳板机的自动脚本登陆到开发机;
在第一次跳转中: line 6表示与终端输出进行正则匹配, 如果匹配到passphrase, 则send即传入密码(line 7), 这步可以根据不同服务器进行修正; 如: 机器在接受ssh登陆命令后弹出password, 则只需将”*passphrase*”改为”*password*”即可;
第二次跳转: 在跳转到跳板机后, 终端会打印用户名等信息, 此时类似第一次跳转, 根据正则匹配, 然后传入命令进行跳转.

interact

表示与终端进行交互, 完成正常跳转. 如果没有此条命令, 则在跳转后会退出.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值