#!/bin/sh # # Example script called by Mender agent to collect inventory data for a # particular devce. The script needs to be located in $(datadir)/mender and its # name shall start with `mender-inventory-` prefix. The script shall exit with # non-0 status on errors. In this case the agent will discard any output the # script may have produced. # # The script shall output inventory data in = format, one entry per # line. Entries appearing multiple times will be joined in a list under the same # key. # # $ ./mender-inventory-network # mac_br-fbfdad18c33c=02:42:7e:74:96:85 # network_interfaces=br-fbfdad18c33c # ipv4_br-fbfdad18c33c=172.21.0.1/16 # mac_enp0s25=de:ad:be:ef:bb:05 # network_interfaces=enp0s25 # ipv4_enp0s25=123.22.0.197/16 # ipv4_enp0s25=10.20.20.105/16 # ipv6_enp0s25=fe80::2aad:beff:feef:bb05/64 # # # The example script collects the list of network interfaces, as well as # ethernet and IP addresses of each of the interfaces. # set -ue SCN=/sys/class/net min=65535 ifdev= # find iface with lowest ifindex, except loopback for devpath in $SCN/*; do dev=$(basename $devpath) if [ $dev = "lo" ]; then continue fi echo "mac_$dev=$(cat $devpath/address)" echo "network_interfaces=$dev" ip addr show dev $dev | awk -v dev=$dev ' /inet / { printf("ipv4_%s=%s\n", dev, $2) } /inet6 / {printf("ipv6_%s=%s\n", dev, $2) } ' done