icknull
26.08.2007, 19:49
#!/usr/bin/perl
use IO::Socket;
$st_ip = @ARGV[0] || die "Usage: $0 [start_ip] [end_ip] [port]\n";
$end_ip = @ARGV[1];
$port = @ARGV[2];
for ($ip = $st_ip; $ip <= $end_ip; $ip++) {
$socket = IO::Socket::INET->new (PeerAddr => $ip,
PeerPort => $port,
Proto => 'tcp');
if ($socket) {
print "\n[$ip] Port $port is open\n";
} else {close($socket);}
close($socket);
}
Вот исходник. Почему то, если указать любой адрес в качестве первого параметра (начальный адрес), он выведет что на этой машине открыт указанный порт. В чем ошибка?
P.S. Хорошо было бы если бы кто нибудь протестил его в локалке. Спасибо!
use IO::Socket;
$st_ip = @ARGV[0] || die "Usage: $0 [start_ip] [end_ip] [port]\n";
$end_ip = @ARGV[1];
$port = @ARGV[2];
for ($ip = $st_ip; $ip <= $end_ip; $ip++) {
$socket = IO::Socket::INET->new (PeerAddr => $ip,
PeerPort => $port,
Proto => 'tcp');
if ($socket) {
print "\n[$ip] Port $port is open\n";
} else {close($socket);}
close($socket);
}
Вот исходник. Почему то, если указать любой адрес в качестве первого параметра (начальный адрес), он выведет что на этой машине открыт указанный порт. В чем ошибка?
P.S. Хорошо было бы если бы кто нибудь протестил его в локалке. Спасибо!