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

SNMP编程

开发平台:

C/C++

  1. #!/usr/bin/perl
  2. # ipchainacc version 1.1.0
  3. # Author: John Lange, john@darkcore.net
  4. # Date: September 12, 2000
  5. #
  6. # This script was written to provide output for MRTG
  7. #  (multi router traffic grapher) via ipchains.
  8. #
  9. # http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/mrtg.html
  10. #
  11. ## Changelog
  12. # Sept 12, 2000
  13. # v1.1.0 added flag for selection of graphing either packets, or bytes.
  14. #        The default is packets (which is pretty useless), but since
  15. #        the previous releases were graphing packets I kept the default
  16. #        the same.
  17. #        I always meant for this to be bytes but I only recently noticed
  18. #        this bug so I added a config flag for bytes.
  19. #        Also changed the uptime slightly, but its still broken. When
  20. #        goes past 99 days, it will hack the last digit off (used to happen
  21. #        after 9 days)
  22. #
  23. # June 22, 2000
  24. # v1.0.1 added -x to ipchains to expand byte counters
  25. # v1.0.0 Inital Release
  26. #
  27. #
  28. #   This command must return 4 lines of output:
  29. #     Line 1 : current state of the 'incoming bytes counter'
  30. #     Line 2 : current state of the 'outgoing bytes counter'
  31. #     Line 3 : string, telling the uptime of the target.
  32. #     Line 4 : string, telling the name of the target.  
  33. # This script relies on you having setup your ipchains rules beforehand
  34. #--- sample ipchains rules that will work with this script
  35. ## Add some empty rules for accounting purposes only
  36. #
  37. #/sbin/ipchains -F acctin 
  38. #/sbin/ipchains -F acctout 
  39. #
  40. ## add the new rules
  41. #/sbin/ipchains -N acctin
  42. #/sbin/ipchains -N acctout 
  43. #
  44. ## empty rules on the chains
  45. #/sbin/ipchains -A acctin 
  46. #/sbin/ipchains -A acctout
  47. #
  48. #/sbin/ipchains -I input -j acctin
  49. #/sbin/ipchains -I output -j acctout
  50. #----------- end ---------------
  51. ## edit for your system
  52. $ipchains='/sbin/ipchains';   # path to ipchains
  53. $host=`/bin/hostname --fqdn`;  # local hostname (for information only)
  54. # if you use the ipchains rules above, you don't have to change these
  55. $inrule='acctin';  # name of input accounting rule
  56. $outrule='acctout'; # name of output accounting rule
  57. # What should we graph? packet counters = 0, bytes = 1
  58. # If you used this script before and you want to keep counting
  59. # packets, then set this to 0. If you would rather do the
  60. # sensible thing and count bytes, then set this to 1. If you change
  61. # from one to the other, then you should delete all the previous
  62. # history since it will be meaningless.
  63. $bytec=0;
  64. ## -- don't edit below here ----
  65. # fetch the status from ipchains
  66. $_=`$ipchains -L $inrule -v -n -x |grep -v -i Chain |grep -v -i pkts`;
  67. @in_bytes = split;
  68. printf "$in_line";   # just for debugging
  69. $_=`$ipchains -L $outrule -v -n -x |grep -v -i Chain |grep -v -i pkts`;
  70. @out_bytes = split;
  71. printf "$out_line";    # just for debugging
  72. #$c=1;
  73. #foreach $value (@in_bytes) {
  74. #  printf "$c: $valuen";
  75. #  $c++;
  76. #};
  77. # uptime of the machine
  78. open(UPTIME,"uptime |cut -b 13-27|");
  79. $upTime=<UPTIME>;
  80. close(UPTIME);
  81. chop $upTime;
  82. # 4 lines of output only.
  83. printf "$in_bytes[$bytec]n$out_bytes[$bytec]n$upTimen$host";