如何以编程方式登录 ssh 服务器并捕获提示?

如何以编程方式登录 ssh 服务器并捕获提示?

我正在尝试编写一个通过 ssh 登录远程服务器的脚本,而不向用户弹出密码提示(远程服务器不在我的控制之下,他们不允许我使用密钥身份验证)。

通常我只是将密码传递到命令中,这工作正常,但每隔 3 个月,他们希望我更改密码,因此会弹出密码提示,这会破坏我的脚本。我尝试通过 STDOUT 和 STDERR 捕获密码提示,但它没有发送到任何一个。我不确定如何捕获提示或发回响应。

作为测试,我尝试在没有密码的情况下执行 ssh,并获得相同的基本行为。

ssh [email protected] 2> /dev/null

仍然显示密码提示,例如

也是如此ssh -T并且ssh -t

任何提示将不胜感激。

干杯

答案1

使用expect,或者用另一种语言实现(维基百科目前有这些的列表)。expect正是为这种终端自动化任务而设计的。引导这种自动化的最快方法可能是这样的:

autoexpect ssh [email protected]

然后根据需要混合键盘,退出 ssh,并检查生成的脚本文件。

相关内容