📄 rrlookup.pl
字号:
#! /usr/local/bin/perl#### Read BGPd logfile and lookup RR's whois database.#### Copyright (c) 1997 Kunihiro Ishiguro##use Socket;## Configuration variables$whois_host = "whois.jpix.ad.jp";#$mail_address = "toshio\@iri.co.jp";$mail_address = "kunihiro\@zebra.org";$mailer = "/usr/sbin/sendmail -oi";#$logfile = "/usr/local/sbin/logfile"$logfile = "logfile";$lookuplog = "lookuplog";## mail routine{ local ($prefix, $origin); open (LOG, $logfile) || die "can't open $logfile"; open (LOOKUP, ">$lookuplog") || die "can't open $lookuplog"; for (;;) { while (<LOG>) { if (/Update\S+ ([\d\.\/]+) .* (\d+) [ie\?]/) { $prefix = $1; $origin = $2; $ret = &whois_check ($prefix, $origin); if ($ret) { print LOOKUP "$prefix AS$origin : Check OK\n"; } else { print LOOKUP "$prefix AS$origin : Error\n"; }# fflush (LOOKUP); } } sleep (3); }}sub whois_check{ local ($prefix, $origin) = @_; local ($rr_prefix, $rr_origin) = (); local (@result); $origin = "AS" . $origin;# print "$prefix $origin\n"; @result = &whois ($prefix); foreach (@result) { if (/^route:.*\s([\d\.\/]+)$/) { $rr_prefix = $1; } if (/^origin:.*\s(AS[\d]+)$/) { $rr_origin = $1; if ($prefix eq $rr_prefix and $origin eq $rr_origin) { return 1; } } } alarm_mail ($prefix, $origin, @result); return 0;}## get port of whoissub get_whois_port { local ($name, $aliases, $port, $proto) = getservbyname ("whois", "tcp"); return ($port, $proto);}## whois lookupsub whois { local ($query) = @_; local ($port, $proto) = &get_whois_port; local (@result); if ($whois_host=~ /^\s*\d+\.\d+\.\d+\.\d+\s*$/) { $address = pack ("C4",split(/\./,$host)); } else { $address = (gethostbyname ($whois_host))[4]; } socket (SOCKET, PF_INET, SOCK_STREAM, $proto); if (connect (SOCKET, sockaddr_in ($port, $address))) { local ($oldhandle) = select (SOCKET); $| = 1; select($oldhandle); print SOCKET "$query\r\n"; @result = <SOCKET>; return @result; }}##sub alarm_mail { local ($prefix, $origin, @result) = @_; open (MAIL, "|$mailer -t $mail_address") || die "can't open $mailer"; print MAIL "From: root\@rr1.jpix.ad.jp\n"; print MAIL "Subject: RR $origin $prefix\n"; print MAIL "MIME-Version: 1.0\n"; print MAIL "Content-Type: text/plain; charset=us-ascii \n\n"; print MAIL "RR Lookup Error Report\n"; print MAIL "======================\n"; print MAIL "Announced route : $prefix from $origin\n\n"; print MAIL "@result"; close MAIL;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -