使用perl脚本与Net :: SSH :: Expect的输出不一致

时间:2013-08-01 08:54:03

标签: perl

我正在使用Net :: SSH :: Expect模块获取远程服务器上tar文件的行数。如果我尝试打印$ myhash {$ key1} {$ key2}的值,有时会得到不一致的输出。通常输出包含3行
1.命令提示
2. tar命令的实际行数,例如.346732
3.提示

所以我通过考虑它是在输出的第二行来提取我的实际值..就像$ array [1]
但有时我会为数组中的少数项获得奇怪的输出。输出是混合的,或第二行是空白的,任何东西。因为我的$ array [1]逻辑失败,因此脚本失败。我也发现如果该项目的相应文件非常大,比如size = 14903968(并非总是如此)

以下是我的示例代码:

my $ssh = Net::SSH::Expect->new (
            host => "hostname.net",
            user => 'username',
            raw_pty => 1,
        );

foreach my $key1 (@array){
      $filename = "something_$key1";
      $myhash{$key1}{'a'} = $ssh->exec("tar xfzO $path/$filename file1.csv | wc -l");
      $myhash{$key1}{'b'} = $ssh->exec("tar xfzO $path/$filename file2.csv | wc -l");
}

$ssh->close();

如果array [1]逻辑不能按预期工作,如何获得实际行数?

0 个答案:

没有答案