iptables-accounting
上传用户:shbosideng
上传日期:2013-05-04
资源大小:1555k
文件大小:2k
源码类别:

SNMP编程

开发平台:

C/C++

  1. #!/usr/bin/perl
  2. # iptables-accounting .9
  3. #
  4. # Author: Vern Gill <vgill@technologist.com>
  5. # Date: March 9, 2001
  6. #
  7. # Adapted from code used in ipchainacc
  8. #
  9. # ipchainacc 1.1.0
  10. #
  11. # Author: John Lange john@darkcore.net
  12. # Date  : September 12, 2000
  13. #
  14. #
  15. # The command takes one argument:
  16. #     Argument: what filter do you want to view
  17. # I.E. iptables-accounting filter
  18. #      iptables-accounting nat
  19. #
  20. # Also, you can check bytes or packets. Check the $bytec below
  21. # and the text above it for details
  22. #
  23. #   This command must return 4 lines of output:
  24. #     Line 1 : current state of the 'incoming bytes counter'
  25. #     Line 2 : current state of the 'outgoing bytes counter'
  26. #     Line 3 : string, telling the uptime of the target.
  27. #     Line 4 : string, telling the name of the target.
  28. #
  29. # To add more counters, just edit the commented out if lines
  30. # below. For instance, to count the filter table and the
  31. # INPUT chain, just change the elsif to filter, and the
  32. # $inrule to INPUT
  33. # Share and enjoy
  34. # edit for your system
  35. $iptables='/usr/local/sbin/iptables';   # path to iptables
  36. $host=`/bin/hostname --fqdn`;  # local hostname (for information
  37. only)
  38. $table = $ARGV[0];
  39. if ( $table =~ /^filter/i ) {
  40.         $inrule='FORWARD';
  41.         $outrule='OUTPUT';
  42. } elsif ( $table =~ /^nat/i ) {
  43.         $inrule='PREROUTING';
  44.         $outrule='POSTROUTING';
  45. } elsif ( $table =~ /^mangle/i ) {
  46.         $inrule='PREROUTING';
  47.         $outrule='OUTPUT';
  48. #} elsif ( $table =~ /^table-name-here/i ) {
  49. #        $inrule='CHAIN-NAME-HERE';
  50. #        $outrule='OTHER-CHAIN-NAME';
  51. #} elsif ( $table =~ /^table-name-here/i ) {
  52. #        $inrule='CHAIN-NAME-HERE';
  53. #        $outrule='OTHER-CHAIN-NAME';
  54. }
  55. # What should we graph? packet counters = 4, bytes = 6
  56. # If you used the ipchainacc script before and you want to keep
  57. counting
  58. # packets, then set this to 4. If you would rather do the
  59. # sensible thing and count bytes, then set this to 6. If you change
  60. # from one to the other, then you should delete all the previous
  61. # history since it will be meaningless.
  62. $bytec=6;
  63. ## -- don't edit below here ----
  64. # fetch the status from iptables
  65. $_=`$iptables -t $table -L $inrule -v -n -x | grep Chain`;
  66. @in_bytes = split;
  67. $_=`$iptables -t $table -L $outrule -v -n -x | grep Chain`;
  68. @out_bytes = split;
  69. # uptime of the machine
  70. open(UPTIME,"uptime |cut -b 13-27|");
  71. $upTime=<UPTIME>;
  72. close(UPTIME);
  73. chop $upTime;
  74. # 4 lines of output only.
  75. printf "$in_bytes[$bytec]n$out_bytes[$bytec]n$upTimen$host";