.\" Portions of this file are subject to the following copyright.  See
.\" the Net-SNMP's COPYING file for more details and other copyrights
.\" that may apply:
.\" /***********************************************************
.\" 	Copyright 1988, 1989 by Carnegie Mellon University
.\" 
.\"                       All Rights Reserved
.\" 
.\" Permission to use, copy, modify, and distribute this software and its 
.\" documentation for any purpose and without fee is hereby granted, 
.\" provided that the above copyright notice appear in all copies and that
.\" both that copyright notice and this permission notice appear in 
.\" supporting documentation, and that the name of CMU not be
.\" used in advertising or publicity pertaining to distribution of the
.\" software without specific, written prior permission.  
.\" 
.\" CMU DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
.\" ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
.\" CMU BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
.\" ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
.\" WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
.\" ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
.\" SOFTWARE.
.\" ******************************************************************/
.\" Portions of this file are copyrighted by:
.\" Copyright Copyright 2003 Sun Microsystems, Inc. All rights reserved.
.\" Use is subject to license terms specified in the COPYING file
.\" distributed with the Net-SNMP package.
.\" ******************************************************************/
.TH SNMPSTATUS 1 "25 Jul 2003" VVERSIONINFO "Net-SNMP"
.SH NAME
snmpstatus - retrieves a fixed set of management information from a network entity
.SH SYNOPSIS
.B snmpstatus
[COMMON OPTIONS] [\-Cf] AGENT
.SH DESCRIPTION
.B snmpstatus
is an SNMP application that retrieves several important statistics
from a network entity.
.PP
AGENT identifies a target SNMP agent, which is instrumented
to monitor the given objects.  At its simplest, the AGENT
specification will consist of a hostname or an IPv4 address.
In this situation, the command will attempt communication with
the agent, using UDP/IPv4 to port 161 of the given target host.
.PP
See the 
.I snmpcmd(1)
manual page for a full list of the possible formats for AGENT.
.PP
The information returned is:
.IP
The IP address of the entity.
.br
A textual description of the entity (sysDescr.0)
.br
The uptime of the entity's SNMP agent (sysUpTime.0)
.br
The sum of received packets on all interfaces
(ifInUCastPkts.* + ifInNUCastPkts.*)
.br
The sum of transmitted packets on all interfaces
(ifOutUCastPkts.* + ifOutNUCastPkts.*)
.br
The number of IP input packets (ipInReceives.0)
.br
The number of IP output packets (ipOutRequests.0)
.PP
For example:
.PP
snmpstatus \-c public \-v 1 netdev\-kbox.cc.cmu.edu
.PP
will produce output similar to the following:
.PP
[128.2.56.220]=>[Kinetics FastPath2] Up: 1 day, 4:43:31
.br
Interfaces: 1,  Recv/Trans packets: 262874/39867 |
IP: 31603/15805
.PP
.B snmpstatus
also checks the operational status of all interfaces (ifOperStatus.*),
and if it finds any that are not running, it will report in a manner
similar to this:
.PP
2 interfaces are down!
.PP
If the network entity has an error processing the request packet, an
error packet will be returned and a message will be shown, helping to
pinpoint in what way the request was malformed.
.B snmpstatus
will attempt to reform its request to eliminate the malformed
variable (unless the
.B \-Cf
option is given, see below), but this variable will then be missing
from the displayed data.
.PP
.SH OPTIONS
.TP
.B COMMON OPTIONS
Please see
.I snmpcmd(1)
for a list of possible values for COMMON OPTIONS
as well as their descriptions.
.TP
.B \-Cf
By default, snmpstatus will try to fix errors returned
by the agent and retry a request. In this situation,
the command will display the data that it can. If the \-Cf option
is specified, then snmpstatus will not try to fix
errors, and the error will cause the command to terminate.
.SH "SEE ALSO"
snmpcmd(1), snmpget(1)
