From 2a854c9b0fd0742fdd5a05c9bcce27da7bf35f82 Mon Sep 17 00:00:00 2001 From: Tobi Oetiker Date: Sun, 11 Sep 2011 10:12:28 +0000 Subject: fixed name JunoOS -> JunOS --- lib/Smokeping/probes/OpenSSHJunOSPing.pm | 188 ++++++++++++++++++++++++++++++ lib/Smokeping/probes/OpenSSHJunoOSPing.pm | 188 ------------------------------ 2 files changed, 188 insertions(+), 188 deletions(-) create mode 100644 lib/Smokeping/probes/OpenSSHJunOSPing.pm delete mode 100644 lib/Smokeping/probes/OpenSSHJunoOSPing.pm (limited to 'lib') diff --git a/lib/Smokeping/probes/OpenSSHJunOSPing.pm b/lib/Smokeping/probes/OpenSSHJunOSPing.pm new file mode 100644 index 0000000..af200dd --- /dev/null +++ b/lib/Smokeping/probes/OpenSSHJunOSPing.pm @@ -0,0 +1,188 @@ +package Smokeping::probes::OpenSSHJunOSPing; + +=head1 301 Moved Permanently + +This is a Smokeping probe module. Please use the command + +C + +to view the documentation or the command + +C + +to generate the POD document. + +=cut + +use strict; + +use base qw(Smokeping::probes::basefork); +use Net::OpenSSH; +use Carp; + +my $e = "="; +sub pod_hash { + return { + name => < < < and L. +DOC + authors => <<'DOC', +Tobias Oetiker Ltobi@oetiker.chL + +based on L by S H A N Lshanali@yahoo.comL. +DOC + } +} + +sub new($$$) +{ + my $proto = shift; + my $class = ref($proto) || $proto; + my $self = $class->SUPER::new(@_); + + # no need for this if we run as a cgi + unless ( $ENV{SERVER_SOFTWARE} ) { + $self->{pingfactor} = 1000; # Gives us a good-guess default + print "### assuming you are using an JunOS reporting in miliseconds\n"; + }; + + return $self; +} + +sub ProbeDesc($){ + my $self = shift; + my $bytes = $self->{properties}{packetsize}; + return "Juniper JunOS - ICMP Echo Pings ($bytes Bytes)"; +} + +sub pingone ($$){ + my $self = shift; + my $target = shift; + my $source = $target->{vars}{source}; + my $dest = $target->{vars}{host}; + my $psource = $target->{vars}{psource}; + my @output = (); + my $login = $target->{vars}{junosuser}; + my $password = $target->{vars}{junospass}; + my $bytes = $self->{properties}{packetsize}; + my $pings = $self->pings($target); + + # do NOT call superclass ... the ping method MUST be overwriten + my %upd; + my @args = (); + + my $ssh = Net::OpenSSH->new( + $source, + $login ? ( user => $login ) : (), + $password ? ( password => $password ) : (), + timeout => 60 + ); + if ($ssh->error) { + warn "OpenSSHJunOSPing connecting $source: ".$ssh->error."\n"; + return undef; + }; + + if ( $psource ) { + @output = $ssh->capture("ping $dest count $pings size $bytes source $psource"); + } else { + @output = $ssh->capture("ping $dest count $pings size $bytes"); + } + $ssh->system("quit"); + + my @times = (); + for (@output){ + chomp; + /^\d+ bytes from $dest: icmp_seq=\d+ ttl=\d+ time=(\d+\.\d+) ms$/ and push @times,$1; + } + @times = map {sprintf "%.10e", $_ / $self->{pingfactor}} sort {$a <=> $b} @times; + return @times; +} + +sub probevars { + my $class = shift; + return $class->_makevars($class->SUPER::probevars, { + packetsize => { + _doc => < 100, + _re => '\d+', + _sub => sub { + my $val = shift; + return "ERROR: packetsize must be between 12 and 64000" + unless $val >= 12 and $val <= 64000; + return undef; + }, + }, + }); +} + +sub targetvars { + my $class = shift; + return $class->_makevars($class->SUPER::targetvars, { + _mandatory => [ 'junosuser', 'junospass', 'source' ], + source => { + _doc => < "192.168.2.1", + }, + psource => { + _doc => < "192.168.2.129", + }, + junosuser => { + _doc => < 'user', + }, + junospass => { + _doc => < 'password', + }, + }); +} + +1; diff --git a/lib/Smokeping/probes/OpenSSHJunoOSPing.pm b/lib/Smokeping/probes/OpenSSHJunoOSPing.pm deleted file mode 100644 index d993f4e..0000000 --- a/lib/Smokeping/probes/OpenSSHJunoOSPing.pm +++ /dev/null @@ -1,188 +0,0 @@ -package Smokeping::probes::OpenSSHJunoOSPing; - -=head1 301 Moved Permanently - -This is a Smokeping probe module. Please use the command - -C - -to view the documentation or the command - -C - -to generate the POD document. - -=cut - -use strict; - -use base qw(Smokeping::probes::basefork); -use Net::OpenSSH; -use Carp; - -my $e = "="; -sub pod_hash { - return { - name => < < < and L. -DOC - authors => <<'DOC', -Tobias Oetiker Ltobi@oetiker.chL - -based on L by S H A N Lshanali@yahoo.comL. -DOC - } -} - -sub new($$$) -{ - my $proto = shift; - my $class = ref($proto) || $proto; - my $self = $class->SUPER::new(@_); - - # no need for this if we run as a cgi - unless ( $ENV{SERVER_SOFTWARE} ) { - $self->{pingfactor} = 1000; # Gives us a good-guess default - print "### assuming you are using an JunOS reporting in miliseconds\n"; - }; - - return $self; -} - -sub ProbeDesc($){ - my $self = shift; - my $bytes = $self->{properties}{packetsize}; - return "Juniper JunOS - ICMP Echo Pings ($bytes Bytes)"; -} - -sub pingone ($$){ - my $self = shift; - my $target = shift; - my $source = $target->{vars}{source}; - my $dest = $target->{vars}{host}; - my $psource = $target->{vars}{psource}; - my @output = (); - my $login = $target->{vars}{junosuser}; - my $password = $target->{vars}{junospass}; - my $bytes = $self->{properties}{packetsize}; - my $pings = $self->pings($target); - - # do NOT call superclass ... the ping method MUST be overwriten - my %upd; - my @args = (); - - my $ssh = Net::OpenSSH->new( - $source, - $login ? ( user => $login ) : (), - $password ? ( password => $password ) : (), - timeout => 60 - ); - if ($ssh->error) { - warn "OpenSSHJunoOSPing connecting $source: ".$ssh->error."\n"; - return undef; - }; - - if ( $psource ) { - @output = $ssh->capture("ping $dest count $pings size $bytes source $psource"); - } else { - @output = $ssh->capture("ping $dest count $pings size $bytes"); - } - $ssh->system("quit"); - - my @times = (); - for (@output){ - chomp; - /^\d+ bytes from $dest: icmp_seq=\d+ ttl=\d+ time=(\d+\.\d+) ms$/ and push @times,$1; - } - @times = map {sprintf "%.10e", $_ / $self->{pingfactor}} sort {$a <=> $b} @times; - return @times; -} - -sub probevars { - my $class = shift; - return $class->_makevars($class->SUPER::probevars, { - packetsize => { - _doc => < 100, - _re => '\d+', - _sub => sub { - my $val = shift; - return "ERROR: packetsize must be between 12 and 64000" - unless $val >= 12 and $val <= 64000; - return undef; - }, - }, - }); -} - -sub targetvars { - my $class = shift; - return $class->_makevars($class->SUPER::targetvars, { - _mandatory => [ 'junosuser', 'junospass', 'source' ], - source => { - _doc => < "192.168.2.1", - }, - psource => { - _doc => < "192.168.2.129", - }, - junosuser => { - _doc => < 'user', - }, - junospass => { - _doc => < 'password', - }, - }); -} - -1; -- cgit v1.2.3-24-g4f1b