我有以下perl脚本。
#!/usr/bin/perl -w
use strict;
use warnings;
my (@failhost);
my %currblocked;
my %addblocked;
my $action;
open (MYINPUTFILE, "/var/log/asterisk/messages") or die "\n", $!, "Does log file file exist\?\n\n";
while (<MYINPUTFILE>) {
my ($line) = $_;
chomp($line);
if ($line =~ m/\' failed for \'(.*?)\' - No matching peer found/) {
push(@failhost,$1);
}
if ($line =~ m/\' failed for \'(.*?)\' . Wrong password/) {
push(@failhost,$1);
print $1 . "\n";
}
}
exit 0;
这会产生以下结果。
212.83.134.244:5065
212.83.134.244:5063
212.83.134.244:5092
212.83.134.244:5109
212.83.134.244:5080
212.83.134.244:5110
212.83.134.244:5096
212.83.134.244:5093
212.83.134.244:5089
212.83.134.244:5073
212.83.134.244:5101
212.83.134.244:5072
212.83.134.244:5092
212.83.134.244:5094
212.83.134.244:5076
212.83.134.244:5080
212.83.134.244:5081
212.83.134.244:5094
212.83.134.244:5077
212.83.134.244:5096
212.83.134.244:5069
212.83.134.244:5097
212.83.134.244:5101
我想删除所有端口号码,包括&#34;:&#34;,只想保留IP地址。
期望的结果将是这样的
212.83.134.244
212.83.134.244
212.83.134.244
212.83.134.244
212.83.134.244
212.83.134.244
212.83.134.244
212.83.134.244
212.83.134.244
212.83.134.244
212.83.134.244
如果有人可以指导我,或者告诉我该怎么做,我将不胜感激?
提前致谢。
答案 0 :(得分:0)
在打印$ 1之前,将其存储在变量中,删除端口详细信息并打印出来:
my $ip = $1;
$ip =~ s/:.*//;
print $ip, "\n";
答案 1 :(得分:0)
如果像这样修改第二个
if ($line =~ m/\' failed for \'([^:]*):\d+\' . Wrong password/) {