---
name: "nutscan_scan_snmp"
section: "3"
platform: "linux"
package: "nut"
version: "2.8.5-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/nutscan_scan_snmp"
---

# nutscan\_scan\_snmp(3)

Scan network for SNMP devices.

## NAME

nutscan\_scan\_snmp - 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)](/nutscan_init/3.md) 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_init/3.md), [**nutscan\_scan\_usb**(3)](/nutscan_scan_usb/3.md), [**nutscan\_scan\_xml\_http\_range**(3)](/nutscan_scan_xml_http_range/3.md), [**nutscan\_scan\_nut**(3)](/nutscan_scan_nut/3.md), [**nutscan\_scan\_avahi**(3)](/nutscan_scan_avahi/3.md), [**nutscan\_scan\_ipmi**(3)](/nutscan_scan_ipmi/3.md), [**nutscan\_display\_sanity\_check**(3)](/nutscan_display_sanity_check/3.md), [**nutscan\_display\_sanity\_check\_serial**(3)](/nutscan_display_sanity_check_serial/3.md), [**nutscan\_display\_ups\_conf\_with\_sanity\_check**(3)](/nutscan_display_ups_conf_with_sanity_check/3.md), [**nutscan\_display\_ups\_conf**(3)](/nutscan_display_ups_conf/3.md), [**nutscan\_display\_parsable**(3)](/nutscan_display_parsable/3.md), [**nutscan\_new\_device**(3)](/nutscan_new_device/3.md), [**nutscan\_free\_device**(3)](/nutscan_free_device/3.md), [**nutscan\_add\_option\_to\_device**(3)](/nutscan_add_option_to_device/3.md), [**nutscan\_add\_device\_to\_device**(3)](/nutscan_add_device_to_device/3.md), [**nutscan\_scan\_eaton\_serial**(3)](/nutscan_scan_eaton_serial/3.md), [**nutscan\_init\_ip\_ranges**(3)](/nutscan_init_ip_ranges/3.md), [**nutscan\_free\_ip\_ranges**(3)](/nutscan_free_ip_ranges/3.md), [**nutscan\_add\_ip\_range**(3)](/nutscan_add_ip_range/3.md), [**nutscan\_cidr\_to\_ip**(3)](/nutscan_cidr_to_ip/3.md)
