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
表示与终端进行交互, 完成正常跳转. 如果没有此条命令, 则在跳转后会退出.