我正在尝试编写一个工具来检查现有PTR记录的IP地址,然后如果没有PTR记录就会ping一下,看看它是否响应。
然后,如果没有回复,它应该打印一条消息
这是我到目前为止所做的。
#!/usr/bin/perl
$ping = "100%";
use warnings;
while (defined($line = <>)) {
chomp($line);
print `nslookup $line`;
if ("NXDOMAIN") {
print `ping -c 1 -w 2.0 $line`;
if ($ping) {
print "IP Address '$line' is available.\n"
}
}
}
我似乎无法开始工作的是if语句,如果文本NXDOMAIN在输出中执行ping操作。然后,如果ping的文本包含$ ping,则打印以下行。
print "IP Address '$line' is available.\n"
非常感谢任何帮助。 谢谢!
答案 0 :(得分:1)
你应该使用perl的内置库来做你需要的。以下是如何使用perl实现ping的示例:
use Net::Ping;
my @list = ("10.0.0.1", "10.0.0.2", "10.0.0.3");
foreach my $addr (@list) {
my $p = Net::Ping->new();
print "IP Address '$addr' is not responsive.\n" if !$p->ping ($addr);
$p->close();
}
答案 1 :(得分:0)
$ping
不是unf。所以if
条件总是返回true!
如果您从特定$ping
收到否定回复,则需要设置IP
变量。
答案 2 :(得分:0)
您需要存储命令返回的值:
# THIS CODE IS UNTESTED, but should get the idea across.
my $nslookupOut = `nslookup $line`;
print $nslookupOut;
if ( $nslookupOut =~ /NXDOMAIN/ ) {
my $pingOut = `ping -c 1 -w 2.0 $line`;
print $pingOut;
if ( $pingOut =~ /$ping/ ) {
...
}
}