2

IP アドレスが ping 可能かどうかを確認するにはどうすればよいですか? また、perl スクリプトを使用して、ping 可能な IP が静的または動的であることを確認するにはどうすればよいですか?

4

3 に答える 3

3

Net::Pingモジュールを見てください。

#!/usr/bin/env perl
#
use strict;
use warnings;

use Net::Ping;

my $ip_address = shift || die "Need an IP address (or hostname).\n";

my $p = Net::Ping->new();
if ( $p->ping($ip_address) ) {
    print "Success!\n";
}
else {
    print "Fail!\n";
}

IP アドレスが動的か静的かを調べるには、もう少し作業が必要です。これこの投稿を見てください。

于 2012-11-19T13:08:15.817 に答える
2

ホストが ICMP に応答しているかどうかを確認するには、次のようにします。

#!/usr/bin/perl

use strict;
use warnings;
use Net::Ping;

my (@alive_hosts, @dead_hosts);

my $ping = Net::Ping->new;

while (my $host = <DATA>) {
        next if $host =~ /^\s*$/;
        chomp $host;
        if ($ping->ping($host)) {
                push @alive_hosts, $host;
        } else {
                push @dead_hosts, $host;
        }
}

if (@alive_hosts) {
        print "Alive hosts\n" . "-" x 10 . "\n";
        print join ("\n", sort @alive_hosts) . "\n\n"
}

if (@dead_hosts) {
        print "Dead hosts\n" . "-" x 10 . "\n";
        print join ("\n", sort @dead_hosts) . "\n\n";
}

__DATA__
server1
server2
server3

結果は次のようになります。

Alive hosts
----------
server1
server2

Dead hosts
----------
server3

2番目の要件についてはわかりません。

于 2012-11-19T13:16:59.710 に答える
1

IP アドレスが ping 可能かどうかを確認するにはどうすればよいですか?

[mpenning@tsunami ~]$ perl -e '$retval=system("ping -c 2 172.16.1.1");if ($retval==0) {print "It pings";} else { print "ping failed"; }'
PING 172.16.1.1 (172.16.1.1) 56(84) bytes of data.
64 bytes from 172.16.1.1: icmp_req=1 ttl=255 time=0.384 ms
64 bytes from 172.16.1.1: icmp_req=2 ttl=255 time=0.416 ms

--- 172.16.1.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.384/0.400/0.416/0.016 ms
It pings[mpenning@tsunami ~]$

よりフレンドリーな形で...

$retval=system("ping -c 2 172.16.1.1");
if ($retval==0) {
    print "It pings\n";
} else {
    print "ping failed\n";
}

また、perl スクリプトを使用して、ping 可能な IP が静的または動的であることを確認するにはどうすればよいですか?

これを行うことができるのは、DHCP サーバーに直接アクセスできる場合、またはサブネットをスニッフィングして DHCP パケットを探すことができる場合のみです。これ以上の情報がなければ、まだ答えられません。

于 2012-11-19T11:36:47.103 に答える