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 )