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

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

猜你喜欢

转载自blog.csdn.net/Vancl_Wang/article/details/82353550