mrtg-blast
上传用户:shbosideng
上传日期:2013-05-04
资源大小:1555k
文件大小:2k
- #!/usr/bin/perl
- ##################################################################
- #
- # Copyright (c) 1997 by Balthasar Indermuehle <balthasar@indermuehle.com>
- # Currently supports Linux 2.0.25
- # All Rights Reserved.
- #
- # See the file COPYRIGHT in the distribution for the exact terms.
- # Based on the mrtg-ping-probe script Copyright 1997 by Peter W. Osel <pwo@guug.de>
- #
- ##################################################################
- require 5.003;
- use Getopt::Std;
- use File::Basename;
- use Config;
- $ProgName = "mrtg-blast";
- $Usage = "Usage: $ProgName hostname portnumber packetsnTypically: $ProgName my.host.com 9 500n";
- # Parse Command Line:
- die $Usage unless getopts('');
- if (@ARGV > 3) {
- print STDERR "$ProgName: WARNING: ignoring but the first three argumentsn";
- }
- if (@ARGV < 3) {
- print STDERR "$ProgName ERROR:nPlease enter a hostname port number and packets to blast (e.g. 9 or 21) as argumentn";
- print STDERR "$Usage";
- exit(1);
- }
- ($HostToBlast, $PortToBlast, $Packets) = @ARGV;
- ($blastres) = blast($HostToBlast, $PortToBlast, $Packets);
- # The external mrtg probe returns up to 4 lines of output:
- # 1. Line: current state of the 'incoming bytes counter'
- # 2. Line: current state of the 'outgoing bytes counter'
- # 3. Line: string, telling the uptime of the target.
- # 4. Line: telling the name of the target.
- # We leave out line 3, and 4.
- print "$blastresn$blastresn";
- exit(0);
- ##################################################################
- # Do the actual blasting
- #
- sub blast {
- my($host, $port, $packets) = @_;
- # The following path to tcpblast needs to be adjusted for your system
- unless (open(BLAST, "/home/netadmin/mrtg-2.1/tcpblast -r -t $host $packets -p$port|")) {
- print STDERR "${ProgName}: FATAL: Can't open tcpblast: $!";
- exit(1);
- }
- while (<BLAST>) {
- # Handle output from 'real' tcpblast which looks like this:
- # 100 KB in 1979 msec = 413946.4 b/s = 51743.3 B/s = 50.5 KB/s
- close(BLAST), return("$4.$5") if /^(d+) KB in (d+) msec = (d+).d b/s = (d+).d B/s = (d+).d KB/s/;
- }
- #Could not get blast results, link may be down, return 0
- close(BLAST), return(0);
- }