0

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

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

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

4

2 回答 2

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";
}
于 2013-05-02T15:00:18.107 回答
0

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

$text = `ssh -q $server 'df -hP'` or die "unable to ssh\n";
@df_ret = split /\n/, $text;
于 2013-05-02T13:55:11.587 回答