如何修改此脚本中的正则表达式以解析ngrep而不是netstat?

时间:2015-09-10 20:45:35

标签: regex perl

我目前正在使用Perl版本的DDoS Deflate脚本,该脚本解析netstat所连接的IP总数,以便应用IP禁止规则。

目前,脚本正在使用此正则表达式解析netstat

my %active_conns_by_ip = ( );
for my $line ( split /^/, `netstat -ntu --protocol=inet` ) {
    if ( $line =~ /^\S+\s+\S+\s+\S+\s+\S+\s+(\S+):\S+/i ) {
        my $ip = $1;

(请参阅nestat -ntu --protocol=inet here的示例输出。)

基本上我想要实现的是脚本正则表达式的更改,它将解析以下命令中的$ip

ngrep -il -d eth0 -W byline "x-forwarded-for" "port 80" | grep -i x-forwarded-for

ngrep的输出格式如下:

X-Forwarded-For: 46.166.xx.xx
X-Forwarded-For: 78.143.xx.xx

1 个答案:

答案 0 :(得分:3)

以下应该这样做:

if ( $line =~ /^X-Forwarded-For:\s+(\d+\.\d+\.\d+\.\d+)/i ) {
  my $ip = $1;

}