我只是写了这个脚本,但是这个脚本只打印一个结果,而不是所有设备的结果。我相信我的错误是在印刷品部分,但我不知道。
注意:-主机文件有30个设备列表,但脚本只打印最后一个设备的结果。
#!/usr/bin/perl
$host_file = "/usr/local/bin/test/host2";
open (PACKETLOSS,"$host_file") or die "Cannot Open Extracted host file";
# Put Extracted data into an array
@extracted_array=<PACKETLOSS>;
chomp(@extracted_array);
foreach(@extracted_array) {
@words = split;
$host = $words[0];
}
$extracted_array[$ping_idx] = `/usr/sbin/ping -s -t 10 $host 56 2 2>&1`;
$ping_idx++;
($packet_loss) = ($ping =~ m/packets received, (\d+)% packet loss/);
($round_trip) = ($ping =~ m/round-trip.*\(ms\).*min\/avg\/max\/stddev = \d+\.\d+\/(\d+\.\d+)\/.*/);
print " $host $round_trip ms Average Latency and $packet_loss Packet loss\n"; 发布于 2011-07-22 00:29:54
因为您正在关闭foreach,然后执行该操作。它应该是
foreach(@extracted_array)
{
@words = split;
$host = $words[0];
$extracted_array[$ping_idx] = `/usr/sbin/ping -s -t 10 $host 56 2 2>&1`;
$ping_idx++;
($packet_loss) = ($ping =~ m/packets received, (\d+)% packet loss/);
($round_trip) = ($ping =~ m/round-trip.*\(ms\).*min\/avg\/max\/stddev = \d+\.\d+\/(\d+\.\d+)\/.*/);
print " $host $round_trip ms Average Latency and $packet_loss Packet loss\n";
}发布于 2011-07-22 00:29:01
使foreach循环在代码的最底部关闭。
foreach(@extracted_array) {
@words = split;
$host = $words[0];
$extracted_array[$ping_idx] = `/usr/sbin/ping -s -t 10 $host 56 2 2>&1`;
$ping_idx++;
($packet_loss) = ($ping =~ m/packets received, (\d+)% packet loss/);
($round_trip) = ($ping =~ m/round-trip.*\(ms\).*min\/avg\/max\/stddev = \d+\.\d+\/(\d+\.\d+)\/.*/);
print " $host $round_trip ms Average Latency and $packet_loss Packet loss\n";
}https://stackoverflow.com/questions/6779328
复制相似问题