expect 实现类似 xshell 的脚本登录

原创
2020/05/06 21:16
阅读数 1K

xshell 免费版本只支持 4 个窗口,且用 xshell 打开的终端在某些情况下会失去快捷键支持(例如 command+backspace)。决定在 Linux 上寻找替代方法,偶然在 v2ex 上看到 expect 命令,它的语法和 shell 有些类似。

#!/usr/bin/expect

spawn ssh vince@jump.test.net -p 1024

expect "Password" {send "******\r"}

以上面这段代码为例,当终端出现 “Password” 时,输入密码。对于简单的 ssh 登录大致如此。

显然,如果 ssh 使用了 2FA,以上方法是行不通的。首先我们需要在 Linux 上生成 Auth code。对于 arch,使用 oathtool。

oathtool --totp -b ****************

重头戏是如何在 expect 脚本中将这个命令的输出转为字符串,这花了我大概几个小时的时间。好在功夫不负有心人。

set code [exec oathtool --totp -b ****************]

不多说了,回家了!

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部