nutscan_scan_snmp - Man Page

Scan network for SNMP devices​.

Synopsis

        #include <nut-scan​.h>
        #include <unistd​.h> /* useconds_t */

        nutscan_device_t * nutscan_scan_snmp(
                const char * start_ip,
                const char * stop_ip,
                useconds_t timeout,
                nutscan_snmp_t * sec);

        nutscan_device_t * nutscan_scan_ip_range_snmp(
                nutscan_ip_range_list_t * irl,
                useconds_t usec_timeout,
                nutscan_snmp_t * sec);

Description

The nutscan_scan_snmp() and nutscan_scan_ip_range_snmp() functions try to detect NUT compatible SNMP devices​. The former tries SNMP queries on every IP ranging from start_ip to stop_ip, where startIP is mandatory and stopIP is optional (one startIP address is scanned if stopIP is NULL); while the latter can walk several IP address ranges represented by a nutscan_ip_range_list_t structure​.

Those IP arguments may be either IPv4 or IPv6 addresses or host names​.

You MUST call nutscan_init(3) before using this function​.

This function waits up to timeout microseconds before considering an IP address does not respond to SNMP queries​.

A valid nutscan_snmp_t structure must be passed to this function​.

The nutscan_snmp_t structure contains the following members which must be filled as described below:

char * 'community';
char * 'secLevel';
char * 'secName';
char * 'authPassword';
char * 'privPassword';
char * 'authProtocol';
char * 'privProtocol';

If community is not NULL, SNMP v1 request are sent using this community​.

If community is NULL and secLevel is NULL, SNMP v1 is selected and community is set to "public"​.

In the other cases, SNMP v3 is used​. secLevel may be one of SNMP_SEC_LEVEL_NOAUTH, SNMP_SEC_LEVEL_AUTHNOPRIV or SNMP_SEC_LEVEL_AUTHPRIV​. secName is the security name and must be non NULL​.

If secLevel is set to SNMP_SEC_LEVEL_AUTHNOPRIV, authPassword must be non NULL​.

If secLevel is set to SNMP_SEC_LEVEL_AUTHPRIV, authPassword and privPassword must be non NULL​.

If authProtocol is NULL, MD5 protocol is used​. Else you can set authProtocol to either "MD5" or "SHA"​.

If privProtocol is NULL, DES protocol is used​. Else you can set privProtocol to either "AES" or "DES"​.

peername and handle are used internally and do not need any initialization​.

Return Value

The nutscan_scan_snmp() function returns a pointer to a nutscan_device_t structure containing all found devices or NULL if an error occurs or no device is found​.

See Also

nutscan_init(3), nutscan_scan_usb(3), nutscan_scan_xml_http_range(3), nutscan_scan_nut(3), nutscan_scan_avahi(3), nutscan_scan_ipmi(3), nutscan_display_sanity_check(3), nutscan_display_sanity_check_serial(3), nutscan_display_ups_conf_with_sanity_check(3), nutscan_display_ups_conf(3), nutscan_display_parsable(3), nutscan_new_device(3), nutscan_free_device(3), nutscan_add_option_to_device(3), nutscan_add_device_to_device(3), nutscan_scan_eaton_serial(3), nutscan_init_ip_ranges(3), nutscan_free_ip_ranges(3), nutscan_add_ip_range(3), nutscan_cidr_to_ip(3)

Referenced By

nut(7), nutscan(3), nutscan_add_device_to_device(3), nutscan_add_option_to_device(3), nutscan_cidr_to_ip(3), nutscan_display_parsable(3), nutscan_display_sanity_check(3), nutscan_display_sanity_check_serial(3), nutscan_display_ups_conf(3), nutscan_display_ups_conf_with_sanity_check(3), nutscan_free_device(3), nutscan_get_serial_ports_list(3), nutscan_init(3), nutscan_new_device(3), nutscan_scan_avahi(3), nutscan_scan_eaton_serial(3), nutscan_scan_ipmi(3), nutscan_scan_nut(3), nutscan_scan_nut_simulation(3), nutscan_scan_usb(3), nutscan_scan_xml_http_range(3).

08/25/2026 Network UPS Tools 2.8.5 NUT Manual