poe_network_status.py
Script Python que verifica la integridad del enlace Ethernet y la dirección IP, útil para confirmar la estabilidad de la alimentación PoE y la conectividad de red.
Hardware: Cable Ethernet conectado al puerto RJ45 (PoE) de la Xerxes Nano. Software: Python 3, utilidades de red (ethtool, iproute2). Ejecución: python3 poe_status.py. Asegúrese de que el interruptor o inyector PoE proporcione suficiente potencia.
poe_network_status.py
#!/usr/bin/env python3
import subprocess
import json
import time
INTERFACE = 'eth0' # Interface principale Ethernet sur Xerxes Nano
def get_network_status(iface):
try:
# Utilisation de ethtool pour vérifier le lien et la vitesse
result = subprocess.run(['ethtool', iface], capture_output=True, text=True)
if 'Link detected: yes' in result.stdout:
print(f"[{time.strftime('%H:%M:%S')}] {iface}: Lien actif")
# Extraction de la vitesse
for line in result.stdout.split('\n'):
if 'Speed:' in line:
print(f" Vitesse: {line.split(':')[1].strip()}")
else:
print(f"[{time.strftime('%H:%M:%S')}] {iface}: Lien inactif")
# Vérification de l'adresse IP via ip command
ip_result = subprocess.run(['ip', '-4', 'addr', 'show', iface], capture_output=True, text=True)
if 'inet' in ip_result.stdout:
ip_addr = ip_result.stdout.split('inet')[1].split()[0]
print(f" IP: {ip_addr}")
except Exception as e:
print(f"Erreur: {e}")
if __name__ == '__main__':
print("Surveillance du port Ethernet PoE de la Xerxes Nano...")
while True:
get_network_status(INTERFACE)
time.sleep(10)