iptables_acc
上传用户:shbosideng
上传日期:2013-05-04
资源大小:1555k
文件大小:2k
- #!/usr/bin/perl
- # iptables_acc version 0.1
- # Author: Gereon Ruetten, g.ruetten@gmx.de
- #
- # for further informations about mrtg :
- #
- # http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/mrtg.html
- #
- # usage :
- # Target[traffic]: /usr/local/mrtg-2/bin/iptables_acc httpin httpout
- #
- # the two arguments are the user chains you want to read
- use strict;
- my ($IPTABLES, $host, $in_chain, $out_chain, $in_data, $out_data);
- $IPTABLES='/usr/local/bin/iptables'; # where to find iptables
- $host=`/bin/hostname --fqdn`; # local hostname (for information only)
- # these are defaults, yu can ovveride them with command-line parameters
- $in_chain='httpin'; # name of input accounting rule
- $out_chain='httpout'; # name of output accounting rule
- $in_data = 0; # edit these settings if you want to monitor something else
- $out_data = 0; # then the bytes counter
- ## -- don't edit below here ----
- my (@rules, @in_count, @out_count, $upTime, $value, $c);
- # get command line params
- ($in_chain,$out_chain) = @ARGV;
- # fetch the status from iptables
- @rules=`$IPTABLES -L $in_chain -v -n -x`;
- splice @rules, 0, 2;
- @in_count=split(' ',$rules[$in_data]);
- @rules=`$IPTABLES -L $out_chain -v -n -x`;
- splice @rules, 0, 2;
- @out_count = split(' ',$rules[$out_data]);
- #$c=1;
- #foreach $value (@in_count) {
- # printf "in $c: $valuen";
- # $c++;
- #};
- #$c=1;
- #foreach $value (@out_count) {
- # printf "out $c: $valuen";
- # $c++;
- #};
- # uptime of the machine
- open(UPTIME,"uptime |cut -b 13-26|");
- $upTime=<UPTIME>;
- close(UPTIME);
- chop $upTime;
- # 4 lines of output only.
- if (!$in_count[1]) { $in_count[1] = 0; }
- if (!$out_count[1]) { $out_count[1] = 0; }
- print "$in_count[1]n",
- "$out_count[1]n",
- "$upTimen$host";