2012-11-19 43 views
1

我怎樣才能找到一個IP地址ping到的或不?另外,如何使用perl腳本查找可ping通的IP是靜態的還是動態的?如何查找IP地址是否可以使用perl?

+0

我建議[問你在谷歌問題(https://www.google.bg/webhp#q=How%20to%20find%20the%20IP%20Address%20is%20pingable%20or%20not%20using %20perl)。 – lanzz

+0

如果有什麼使用DHCP,如果您有DHCP服務器直接訪問,或者你嗅探DHCP報文只能檢測。你可以做任何一個嗎?如果是這樣,哪一個? –

回答

1

我怎樣才能找到一個IP地址ping到的或不?

[[email protected] ~]$ 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[[email protected] ~]$ 

更友好的形式...

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

此外,我怎麼能找到ping的IP是靜態或動態使用Perl腳本?

如果您可以直接訪問DHCP服務器,或者可以嗅探子網並查找DHCP數據包,則只能執行此操作。沒有更多的信息,我們無法回答這個問題。

2

看一看的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地址是動態還是靜態需要更多的工作。看看thisthis崗位。

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 

我不知道關於你的第二個需求。