Mon
view release on metacpan or search on metacpan
Mon/Client.pm view on Meta::CPAN
@ISA = qw(Exporter);
@EXPORT_OK = qw(%OPSTAT $VERSION);
$VERSION = "0.11";
my ($STAT_FAIL, $STAT_OK, $STAT_COLDSTART, $STAT_WARMSTART, $STAT_LINKDOWN,
$STAT_UNKNOWN, $STAT_TIMEOUT, $STAT_UNTESTED, $STAT_DEPEND, $STAT_WARN) = (0..9);
my ($TRAP_COLDSTART, $TRAP_WARMSTART, $TRAP_LINKDOWN, $TRAP_LINKUP,
$TRAP_AUTHFAIL, $TRAP_EGPNEIGHBORLOSS, $TRAP_ENTERPRISE, $TRAP_HEARTBEAT) = (0..7);
%OPSTAT = ("fail" => $STAT_FAIL, "ok" => $STAT_OK, "coldstart" =>
$STAT_COLDSTART, "warmstart" => $STAT_WARMSTART, "linkdown" =>
$STAT_LINKDOWN, "unknown" => $STAT_UNKNOWN, "timeout" => $STAT_TIMEOUT,
"untested" => $STAT_UNTESTED, "dependency" => $STAT_DEPEND);
my %TRAPS = ( "coldstart" => $TRAP_COLDSTART, "warmstart" =>
$TRAP_WARMSTART, "linkdown" => $TRAP_LINKDOWN, "linkup" => $TRAP_LINKUP,
"authfail" => $TRAP_AUTHFAIL, "egpneighborloss" => $TRAP_EGPNEIGHBORLOSS,
"enterprise" => $TRAP_ENTERPRISE, "heartbeat" => $TRAP_HEARTBEAT );
sub _sock_write;
sub _sock_readline;
sub _do_cmd;
sub _list_opstatus;
sub _start_stop;
sub _un_esc_str;
sub _esc_str;
sub new {
my $proto = shift;
my $class = ref($proto) || $proto;
my $self = {};
my %vars = @_;
if ($ENV{"MONHOST"}) {
$self->{"HOST"} = $ENV{"MONHOST"};
} else {
$self->{"HOST"} = undef;
}
$self->{"CONNECTED"} = undef;
$self->{"HANDLE"} = new IO::File;
$self->{"PORT"} = getservbyname ("mon", "tcp") || 2583;
$self->{"PROT"} = 0x2611;
$self->{"TRAP_PRO_VERSION"} = "0.3807";
$self->{"PASSWORD"} = undef;
$self->{"USERNAME"} = undef;
$self->{"DESCRIPTIONS"} = undef;
$self->{"GROUPS"} = undef;
$self->{"ERROR"} = undef;
$self->{"VERSION"} = undef;
if ($ENV{"USER"} ne "") {
$self->{"USERNAME"} = $ENV{"USER"};
} else {
$self->{"USERNAME"} = (getpwuid ($<))[0];
}
$self->{"OPSTATUS"} = undef;
$self->{"DISABLED"} = undef;
foreach my $k (keys %vars) {
if ($k eq "host" && $vars{$k} ne "") {
$self->{"HOST"} = $vars{$k};
} elsif ($k eq "port" && $vars{$k} ne "") {
$self->{"PORT"} = $vars{$k};
} elsif ($k eq "username") {
$self->{"USERNAME"} = $vars{$k};
} elsif ($k eq "password") {
$self->{"PASSWORD"} = $vars{$k};
}
}
bless ($self, $class);
return $self;
}
sub password {
my $self = shift;
if (@_) { $self->{"PASSWORD"} = shift }
return $self->{"PASSWORD"};
}
sub host {
my $self = shift;
if (@_) { $self->{"HOST"} = shift }
return $self->{"HOST"};
}
sub port {
my $self = shift;
if (@_) { $self->{"PORT"} = shift }
return $self->{"PORT"};
}
sub username {
my $self = shift;
if (@_) { $self->{"USERNAME"} = shift }
return $self->{"USERNAME"};
}
sub prot {
my $self = shift;
undef $self->{"ERROR"};
if (@_) {
if ($_[0] =~ /^\d+\.\d+\.\d+$/) {
$self->{"PROT"} = shift;
} else {
$self->{"ERROR"} = "invalid protocol version";
return undef;
}
}
return $self->{"PROT"};
( run in 1.273 second using v1.01-cache-2.11-cpan-39bf76dae61 )