用win时,有xshell之类的工具帮你记录服务器或者跳板机的密码,但到mac/linux上时虽然也有这样的软件,但mac本身就有终端,再用这样软件使用shell,感觉不太舒服(我有个怪癖,就是电脑能不装的软件决不安装)。于是就想自己写个脚本实现这样的功能。

那就开始干吧,这里自己给自己埋了个坑,那就是当初在win上生成rsa时,输入了密码,结果在mac上执行ssh-add添加密钥时需要输入密码,这就使脚本不太自动化,需要手动输入密码。
于是只能求助google了,发现了expect,于是就把脚本升级了下,内容如下:

没有expect则利用brew安装,命令brew install expect

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/expect

spawn ssh -A -p port username@ip

expect {
"*?ermission denied" {
set password "生成rsa时的密码"
spawn ssh-add /Users/hadoop/.ssh/id_rsa_2048
expect "passphrase"
send "$password\n"
interact
spawn ssh -A -p port username@ip
}
"*?ast login*" {
}

}
interact