在perl中提示输入密码时死亡

时间:2010-11-17 16:42:48

标签: perl ssh

我有一个脚本,它使用ssh密钥连接到特定用户的远程服务器。但是,如果用户信息已更改且密钥未更新,则脚本将挂起以等待密码。

如何在提示输入密码时捕获此信息并抛出DIE?

例如,如果我使用:

system("ssh -C USER@someserver.com -i /.ssh/USER.key ...");

和USER在USER.key中不是同一个USER,它挂起等待密码。我宁愿让它死。

在不使用perl模块的情况下处理此问题的最佳方法是什么?

3 个答案:

答案 0 :(得分:7)

试试这个:

system('ssh -o BatchMode=yes -C USER@someserver.com -i /.ssh/USER.key ...');

BatchMode选项将阻止ssh提示输入密码,并且只有在需要密码时才会终止。

答案 1 :(得分:4)

当您使用system时,您放弃对ssh的控制权。我建议您查看ssh的选项。

此外,您应该使用warnings

答案 2 :(得分:0)

您是否考虑过将CPAN提供的任何SSH模块用作Net :: SSH2或Net :: OpenSSH?