Была поставлена задача на перле написать скриптик который пингует 2-е подсети класса С (т.е. в сумме 512 :) IP адесов) и производит анализ по веткам и выдает результат. Казалось бы все просто...
...
my $ippath = "/home/den/scripts/ipping/";
my $ipname = "ip.24";
my $logname = "ip.log";
my $path2ip = "$ippath$ipname";
my $path2log = "$ippath$logname";
my ($ip3, $loop_ind, $pingstr);
my $timesec = time;
unlink $path2log;
open (IP, "< $path2ip");
open (LOG, ">> $path2log");
while (<IP>) {
chomp ($_);
$ip3=$_;
for ($loop_ind=0; $loop_ind<=255; $loop_ind++) {
$pingstr="ping -s 32 -qnc 1 -q "."$ip3".".$loop_ind".">/dev/null";
my $rez = system ("$pingstr");
if ($rez == 0) {
print LOG "$ip3".".$loop_ind"." 1\n";
print "$ip3".".$loop_ind"." 1\n";
} else {
print LOG "$ip3".".$loop_ind"." 0\n";
print "$ip3".".$loop_ind"." 0\n";
}
...
т.е. пингуем 1 пакетом в 32 байта определенный IP и делаем вывод жив он или нет... вот тут и начинается :)) когда хост "жив" все ок пинг проходит очень быстро! ну а когда не отвечает проходит ~3 секунды пока не наступит таймаут и пинг не поймет что хоста нет... вот как бы уменьшить время таймаута примерно до 500 милесекунт? кто знает?
man ping не предлагать! :))) начитался уже