diff --git a/.crush/active-ticket b/.crush/active-ticket index 4ce90c0..71e9083 100644 --- a/.crush/active-ticket +++ b/.crush/active-ticket @@ -1 +1 @@ -#705 +#808 diff --git a/lldp-topology-librenms.tsv b/lldp-topology-librenms.tsv new file mode 100644 index 0000000..e3d3c9a --- /dev/null +++ b/lldp-topology-librenms.tsv @@ -0,0 +1,18 @@ +pfv-r5-core-01.knel.net g26 ap-tablemount.knel.net eth0 +pfv-r3-tor-stor-01.knel.net g20 pfv-r5-core-01.knel.net g13 +pfv-r3-tor-stor-01.knel.net g21 pfv-r5-core-01.knel.net g16 +pfv-r3-tor-stor-01.knel.net g22 pfv-r5-core-01.knel.net g15 +pfv-r3-tor-stor-01.knel.net g23 pfv-r5-core-01.knel.net g14 +pfv-r3-tor-stor-01.knel.net g24 pfv-r5-core-01.knel.net g17 +pfv-r3-tor-mgmt-01.knel.net g24 pfv-r5-core-01.knel.net g12 +pfv-r6-mgmt-01.knel.net g1 pfv-r5-core-01.knel.net g39 +pfv-r5-core-01.knel.net g12 pfv-r3-tor-mgmt-01.knel.net g24 +pfv-r5-core-01.knel.net g13 pfv-r3-tor-stor-01.knel.net g20 +pfv-r5-core-01.knel.net g14 pfv-r3-tor-stor-01.knel.net g23 +pfv-r5-core-01.knel.net g15 pfv-r3-tor-stor-01.knel.net g22 +pfv-r5-core-01.knel.net g16 pfv-r3-tor-stor-01.knel.net g21 +pfv-r5-core-01.knel.net g17 pfv-r3-tor-stor-01.knel.net g24 +pfv-r5-core-01.knel.net g39 pfv-r6-mgmt-01.knel.net g1 +pfv-r5-core-01.knel.net g9 ap-wallmount.knel.net eth0 +pfv-r5-core-01.knel.net g41 pfv-tsys1.knel.net nic0 +pfv-r5-core-01.knel.net g40 pfv-tsys1.knel.net nic1 diff --git a/scripts/lldp-topology.sh b/scripts/lldp-topology.sh new file mode 100755 index 0000000..c93dec3 --- /dev/null +++ b/scripts/lldp-topology.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env bash +# lldp-topology.sh — pull LLDP neighbor links from LibreNMS [#808 phase 2] +# +# Reads the LibreNMS links table (LLDP/CDP discovery) and emits +# hostnameA, portA, hostnameB, portB rows. Run ON tsys-librenms as root +# (MariaDB local auth) or via: lldp-topology.sh --fetch +# +# Output feeds GLPI NetworkEquipment + port-connection creation +# (phase 2 of the GLPI x LibreNMS cross-feed). See librenms-glpi-drift.sh +# for the device-level report (phase 1). +set -uo pipefail + +LNMS_HOST="${LNMS_HOST:-100.86.204.77}" +QUERY="SELECT d1.hostname, p1.ifName, d2.hostname, p2.ifName +FROM links l +JOIN devices d1 ON l.local_device_id=d1.device_id +JOIN devices d2 ON l.remote_device_id=d2.device_id +LEFT JOIN ports p1 ON l.local_port_id=p1.port_id +LEFT JOIN ports p2 ON l.remote_port_id=p2.port_id;" + +if [ "${1:-}" = "--fetch" ]; then + ssh -o BatchMode=yes "root@${LNMS_HOST}" "mysql -N librenms -e \"$QUERY\"" 2>/dev/null +else + # local mode: run on tsys-librenms itself + mysql -N librenms -e "$QUERY" 2>/dev/null +fi