115 lines
2.6 KiB
Text
115 lines
2.6 KiB
Text
|
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;
|
||
|
|
||
|
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
|
||
|
default. You must `./configure --with-lib` to enable building and
|
||
|
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.
|