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

SNMP编程

开发平台:

C/C++

  1. #!/usr/bin/perl
  2. ##################################################################
  3. #
  4. # Copyright (c) 1997 by Balthasar Indermuehle <balthasar@indermuehle.com>
  5. # Currently supports Linux 2.0.25
  6. # All Rights Reserved.
  7. # See the file COPYRIGHT in the distribution for the exact terms.
  8. # Based on the mrtg-ping-probe script Copyright 1997 by Peter W. Osel <pwo@guug.de>
  9. #
  10. ##################################################################
  11. require 5.003;
  12. use Getopt::Std;
  13. use File::Basename;
  14. use Config;
  15. $ProgName = "mrtg-blast";
  16. $Usage = "Usage: $ProgName hostname portnumber packetsnTypically: $ProgName my.host.com 9 500n";
  17. # Parse Command Line:
  18. die $Usage unless getopts('');
  19. if (@ARGV > 3) {
  20. print STDERR "$ProgName: WARNING: ignoring but the first three argumentsn";
  21. }
  22. if (@ARGV < 3) {
  23. print STDERR "$ProgName ERROR:nPlease enter a hostname port number and packets to blast (e.g. 9 or 21) as argumentn";
  24. print STDERR "$Usage";
  25. exit(1);
  26. }
  27. ($HostToBlast, $PortToBlast, $Packets) = @ARGV;
  28. ($blastres) = blast($HostToBlast, $PortToBlast, $Packets);
  29. # The external mrtg probe returns up to 4 lines of output:
  30. # 1. Line: current state of the 'incoming bytes counter'
  31. # 2. Line: current state of the 'outgoing bytes counter'
  32. # 3. Line: string, telling the uptime of the target.
  33. # 4. Line: telling the name of the target.
  34. # We leave out line 3, and 4.
  35. print "$blastresn$blastresn";
  36. exit(0);
  37. ##################################################################
  38. # Do the actual blasting 
  39. #
  40. sub blast {
  41. my($host, $port, $packets) = @_;
  42. # The following path to tcpblast needs to be adjusted for your system
  43. unless (open(BLAST, "/home/netadmin/mrtg-2.1/tcpblast -r -t $host $packets -p$port|")) {
  44. print STDERR "${ProgName}: FATAL: Can't open tcpblast: $!";
  45. exit(1);
  46. }
  47. while (<BLAST>) {
  48. # Handle output from 'real' tcpblast which looks like this:
  49. # 100 KB in 1979 msec  =  413946.4 b/s  =  51743.3 B/s  =  50.5 KB/s
  50. close(BLAST), return("$4.$5") if /^(d+) KB in (d+) msec  =  (d+).d b/s  =  (d+).d B/s  =  (d+).d KB/s/;
  51. }
  52. #Could not get blast results, link may be down, return 0
  53. close(BLAST), return(0);
  54. }