在perl中进行ssh登录验证

时间:2013-05-02 13:45:47

标签: perl bash ssh

我在perl脚本中运行以下代码行来查找远程机器的df输出。这工作正常,并在@df_ret中收集信息直到ssh键为uptodate。如果公共损坏或更改,它在脚本中没有显示任何错误迹象。如果我手动运行,我将被要求输入密码。

@df_ret = split /\n/, `ssh -q $server 'df -hP'`;

有什么方法可以验证如果ssh登录成功,那么这个perl脚本行应该执行,否则不行。一直在寻找很多搜索,但无法到达ONE。有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

我有一个解决方案如下工作;     #!的/ usr / local / bin中/ perl的

my $line  = `ssh $server -o 'BatchMode=yes' -o 'ConnectionAttempts=1' true`;
my $error = `echo $?`;

print "Error = $error";

if($error == 0 )
{
    print "This is good";
    @df_ret = split /\n/, `ssh -q $server 'df -hP'`;
}
else
{
    print "This is bad";
}

答案 1 :(得分:0)

在分割之前检查ssh exec的结果:

$text = `ssh -q $server 'df -hP'` or die "unable to ssh\n";
@df_ret = split /\n/, $text;