【发布时间】:2022-02-07 11:15:56
【问题描述】:
我通过 ssh 登录我们公司的服务器,但服务器询问我的密码和 otp 令牌。 因为我知道我的 otp 秘密,所以我可以在我的脚本中生成我的 otp。
提示如下:
$ ssh mike@relay.office.com
Your password:
Your token:
假设我的密码是“123”,令牌是“456” 我写了一个这样的期望脚本,它应该可以工作
#!/usr/bin/expect
spawn ssh mike@relay.office.com
expect "password:"
send "123\n"
send "456\n"
interact
不过提示是这样的:
$ ./expect.sh
Your [EMAIL] password:
Your [VPN] token:
^[[?65;1;9cInvalid credentials
你看,ssh 服务器返回一些大量代码,后跟“无效凭据”
我不明白凌乱的代码是从哪里来的。
在正常情况下。即使我输入了错误的密码或令牌,它也只会提示“无效凭据”而没有任何乱码。是来自我们的 ssh 服务器的某种 anti-script login 方法吗?
一些补给
根据下面的答案,我需要澄清一下,我之前忘记在我的脚本中粘贴 expect 行。但即使有了它,问题仍然存在。
还有一件事我之前没有提到,但可能是相关的。当我输入ssh mike@xxx.com。服务器返回了一个二维码。(是的,终端中的二维码。)它包含color escape 以及some unicode characters。我不确定expect 在处理 unicode 字符方面是否有任何错误
【问题讨论】: