распечатать результат со всех устройств в массиве - PullRequest
0 голосов
/ 21 июля 2011

Я просто пишу этот сценарий, однако сценарий выводит только один результат, а не результаты со всех устройств.Я полагаю, что моя ошибка в разделе печати, но я не смог выяснить.

Примечание: - в файле хоста есть список из 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"; 

Ответы [ 2 ]

1 голос
/ 21 июля 2011

Закройте цикл 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"; 

}
0 голосов
/ 21 июля 2011

Потому что вы закрываете 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";  
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...