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

SNMP编程

开发平台:

C/C++

  1. #!/usr/bin/perl
  2. #
  3. # byte counter for a Equinox SST card with analog modem pool
  4. # for use with mrtg2
  5. #
  6. # by Mike Gaertner <mg@forum.org.kh>
  7. # 20 Apr 2000
  8. #
  9. # Returns the total sum of the input and output character counter 
  10. # from an SST card for all ports you specify 
  11. #
  12. # NEEDS the Linux driver version 3-35c for SST based boards
  13. #
  14. # --- sample.cfg file ---
  15. #  #MaxBytes = (8 x 56kbit/s modems) / 8 = 56000 bytes/s total capacity
  16. #  #           adjust this to the number of modems you have
  17. #
  18. #  Target[modems]: `/usr/local/mlog3/bin/mrtg/get-equi.pl`
  19. #  MaxBytes[modems]: 56000
  20. #  Title[modems]: OFIX modem pool traffic (8 Modems)
  21. #  Options[modems]: growright
  22. #  XSize[modems]: 500
  23. #  YSize[modems]: 200
  24. #  WithPeak[modems]: my
  25. #  PageTop[modems]: <H1>Traffic Analysis modem pool (8 Modems)</H1>
  26. # -------
  27. #
  28. # Edit the @m array 
  29. # @m = Modems you want to monitor without ttyQ
  30. #
  31. # check the $sstty path
  32. #
  33. use strict;
  34. my(@m,$sstty,$port,$i,$o,$new_i,$new_o,$source);
  35. # modems
  36. @m = ("1a5","1a6","1a7","1a8","1a9","1a10","1a11","1a12") ;
  37. $sstty = "/usr/bin/sstty -s ";
  38. $source = "equinox modempool";
  39. $new_i = 0;
  40. $new_o = 0;
  41. foreach $port ( @m ) {
  42. open ( STAT, "$sstty $port |" ) ;
  43. while( <STAT> ) {
  44.                 if ( /input/ ) {
  45. ($i,$o) = (split(/ +/))[8,11] ;
  46. $new_i += hex($i);
  47. $new_o += hex($o);
  48.                 }
  49. }
  50. close(STAT);
  51. }
  52. print $new_i,"n",$new_o,"n",&uptime(),"n$sourcen"  ;
  53. #find out when the board driver was last loaded
  54. sub uptime {
  55.     my($start,$now,$diff,$s,$m,$h,$d,$hms);
  56.     $start = (stat("/etc/eqnx/logfile"))[10] ;
  57.     $now = time() ;
  58.     $diff = $now - $start ;
  59.     $s = $diff % 60;
  60.     $diff = ($diff - $s) / 60;
  61.     $m = $diff % 60;
  62.     $diff = ($diff - $m) / 60;
  63.     $h = $diff % 24;
  64.     $diff = ($diff - $h) / 24;
  65.     $d = $diff ;
  66.     
  67.     $hms.= ($h < 10 ? " " : "") . $h;
  68.     $hms.= ($m < 10 ? ":0" : ":") . $m;
  69.     $hms.= ($s < 10 ? ":0" : ":") . $s;
  70.     return "$d days, $hms";
  71. }