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

SNMP编程

开发平台:

C/C++

  1. #!/usr/bin/perl
  2. #
  3. # Mihai Claudiu Capatina <mick@aignet.ro> 
  4. # aka Mick
  5. #
  6. # This is a small script that I use on FreeBSD machines running ALTQ 
  7. # This machines acts like a traffic management system and I need to see 
  8. # the traffic for each class ( CBQ ) 
  9. # All you need to change in this script is the path to "altqstat"
  10. # and the name of the interfaces
  11. # In my case fxp0 is connected to my LAN and fxp1 is connected to my ISP
  12. # so...I measure on fxp0 the download and on the fxp1 the upload for each class
  13. #
  14. # This script has only one parameter....this is the class number assigned 
  15. # by ALTQ. 
  16. # If you want to use this script I suppose that you already instaled ALTQ
  17. # In any case do "altqstat -w 0 -c 2 -i your_interface" to see what your
  18. # class number is...for each class
  19. # If you want to count packets instead of bytes change the st line of the script# instead of $octeti_down and $octeti_up put $pakete_down and $pakete_up
  20. #
  21. # You will call this script from mrtg.conf like this :
  22. # Target[name]: `/your/path/to/my/script/stfc [class_number]
  23. #  - name - can be an ip address or a client name or whatever you want
  24. #  - class_number - explained above...
  25. # VERY IMPORTANT : always define classes in the same order for upload and 
  26. #                  download...so they will have the same class number 
  27. #
  28. # If you need additional information please feel free to mail me...I'll be glad
  29. # to help you...;-))
  30. $numar_clasa = $ARGV[0];
  31. @rezultat_down=`/usr/local/bin/altqstat -w 0 -c 2 -i fxp0`;
  32. foreach (@rezultat_down) {
  33.   $count++;
  34.   if ( /^Class(s+)(d+)(.*)/ ) {   
  35.    if ( $2 == $numar_clasa) {
  36.     if ($rezultat_down[$count+2] =~ /^(s+)pkts: (d+),(s+)bytes: (d+)(.*)/) {
  37.        $pakete_down = $2;
  38.        $octeti_down = $4;
  39.         }
  40.       }
  41.    }
  42. }
  43. @rezultat_up=`/usr/local/bin/altqstat -w 0 -c 2 -i fxp1`;
  44. foreach (@rezultat_up) {
  45.  $count1++;
  46.  if ( /^Class(s+)(d+)(.*)/ ) {
  47.   if ( $2 == $numar_clasa) {
  48.    if ($rezultat_up[$count1+2] =~ /^(s+)pkts: (d+),(s+)bytes: (d+)(.*)/) {
  49.        $pakete_up = $2;
  50.        $octeti_up = $4;
  51.         }
  52.       }
  53.    }
  54. }
  55. open(UPTIME,"uptime |cut -b 13-26|");
  56. $upTime=<UPTIME>;
  57. close(UPTIME);
  58. chop $upTime;
  59. $host=`/bin/hostname --fqdn`;
  60. print("$octeti_downn$octeti_upn$upTimen$host");