我尝试阅读此内容,但我不明白为什么会发生这种情况。
当 Expect 发送密码时,它在终端中显示为回显明文,然后显示“抱歉,请重试”。出现。
脚本如下
#!/usr/bin/expect -f
spawn bash
send -- "sudo (many tasks)\r"
expect -exact "\[sudo\] password for elade: "
send -- "password\r"
expect -exact "[email protected]'s password: "
send -- "password\r"
expect "@"
send -- "echo Done; sleep 1; exit\r"
expect eof
发送第一个密码后的终端输出为:
[sudo] password for elade:
password
Sorry, try again.
我正在使用 Arch linux 和终端模拟器 Konsole。
答案1
感谢以上所有的输入。在尝试了所有建议后,原始脚本突然又开始工作了。当提示输入密码时,并且密码由expect发送,它没有像以前那样出现在终端中并被拒绝,它被无形地传递到终端并被接受,就像我自己打字一样。
所以我运行了脚本几次,1/10 次同样的问题仍然存在。需要发送三种不同的密码,哪一种“通过”,哪一种在终端中“回显”并被拒绝似乎是随机的。我不知道为什么会发生这种情况,但我怀疑这与 Expect 和实际脚本没有什么关系。