2012-01-24 10:22:33 +00:00
|
|
|
NUT device discovery
|
|
|
|
====================
|
|
|
|
|
|
|
|
Introduction
|
|
|
|
------------
|
|
|
|
|
|
|
|
linkman:nut-scanner[8] is available to discover supported NUT devices
|
|
|
|
(USB, SNMP, Eaton XML/HTTP and IPMI) and NUT servers (using Avahi or the
|
|
|
|
classic connection method).
|
|
|
|
|
|
|
|
This tool actually use a library, called *libnutscan*, to perform actual
|
|
|
|
processing.
|
|
|
|
|
|
|
|
|
|
|
|
Client access library
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
The nutscan library can be linked into other programs to give access
|
|
|
|
to NUT discovery. Both static and shared versions are provided.
|
|
|
|
|
|
|
|
linkman:nut-scanner[8] is provided as an example of how to use the nutscan
|
|
|
|
functions.
|
|
|
|
|
|
|
|
Here is a simple example that scans for USB devices, and use its own
|
|
|
|
iteration function to display results:
|
|
|
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <string.h>
|
|
|
|
|
|
|
|
/* Only enable USB scan */
|
|
|
|
#define HAVE_USB_H
|
|
|
|
|
|
|
|
#include "nut-scan.h"
|
|
|
|
|
|
|
|
int main()
|
|
|
|
{
|
|
|
|
nutscan_options_t * opt;
|
|
|
|
nutscan_device_t *device;
|
|
|
|
|
2022-06-29 10:37:36 +00:00
|
|
|
nutscan-init();
|
|
|
|
|
2012-01-24 10:22:33 +00:00
|
|
|
if ((device = nutscan_scan_usb()) == NULL) {
|
|
|
|
printf("No device found\n");
|
|
|
|
exit(EXIT_FAILURE);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Rewind the list */
|
|
|
|
while(device->prev != NULL) {
|
|
|
|
device = device->prev;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Print results */
|
|
|
|
do {
|
|
|
|
printf("USB device found\n\tdriver: \"%s\"\n\tport: \"%s\"\n",
|
|
|
|
device->driver, device->port);
|
|
|
|
|
|
|
|
/* process options (serial number, bus, ...) */
|
|
|
|
opt = &(device->opt);
|
|
|
|
do {
|
|
|
|
if( opt->option != NULL ) {
|
|
|
|
printf("\t%s",opt->option);
|
|
|
|
if( opt->value != NULL ) {
|
|
|
|
printf(": \"%s\"", opt->value);
|
|
|
|
}
|
|
|
|
printf("\n");
|
|
|
|
}
|
|
|
|
opt = opt->next;
|
|
|
|
} while( opt != NULL );
|
|
|
|
|
|
|
|
device = device->next;
|
|
|
|
}
|
|
|
|
while( device != NULL );
|
|
|
|
|
|
|
|
exit(EXIT_SUCCESS);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
This library file and the associated header files are not installed by
|
2016-07-18 00:11:41 +00:00
|
|
|
default. You must `./configure --with-dev` to enable building and
|
2012-01-24 10:22:33 +00:00
|
|
|
installing these files. The libraries can then be built and installed
|
|
|
|
with `make` and `make install` as usual. This must be done before
|
|
|
|
building other (non-NUT) programs which depend on them.
|
|
|
|
|
|
|
|
For more information, refer to the linkman:nutscan[3],
|
|
|
|
manual page and the various
|
|
|
|
link:man/index.html#devscan[nutscan_*(3)] functions documentation
|
|
|
|
referenced in the same file.
|
|
|
|
|
|
|
|
|
|
|
|
Configuration helpers
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
NUT provides helper scripts to ease the configuration step of your program, by
|
|
|
|
detecting the right compilation and link flags.
|
|
|
|
|
|
|
|
For more information, refer to a
|
|
|
|
<<lib-info,Appendix B: NUT libraries complementary information>>.
|
|
|
|
|
|
|
|
|
|
|
|
Python
|
|
|
|
------
|
|
|
|
|
|
|
|
Python support for NUT discovery features is not yet available.
|
|
|
|
|
|
|
|
|
|
|
|
Perl
|
|
|
|
----
|
|
|
|
|
|
|
|
Perl support for NUT discovery features is not yet available.
|
|
|
|
|
|
|
|
|
|
|
|
Java
|
|
|
|
----
|
|
|
|
|
|
|
|
Java support for NUT discovery features is not yet available.
|