Ho un cluster ad alta disponibilità (Heartbeat) collegato tramite linea seriale e due schede di rete Ethernet. Vorrei impostare uno script di monitoraggio in grado di riconoscere la linea seriale disconnessa (sostanzialmente la stessa domanda ha avuto una risposta in SO , tuttavia non sono soddisfatto di una risposta così generale).
Non riesco semplicemente ad aprire il dispositivo seriale e leggere i dati da solo, poiché Heartbeat apre la linea seriale.
Quindi ho iniziato a cercare alcuni indizi indiretti. L'unica differenza che ho trovato finora è nei contenuti di /proc/tty/driver/serial
. Ecco come appare quando è collegato:
# cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:2722759 rx:2718165 brk:1 RTS|CTS|DTR|DSR|CD
E quando disconnesso:
# cat /proc/tty/driver/serial
serinfo:1.0 driver revision:
0: uart:16550A port:000003F8 irq:4 tx:2725233 rx:2720703 brk:1 RTS|DTR
Non sono abbastanza sicuro di decidere che i segnali elencati alla fine della linea abbiano il significato stesso di cavo collegato / disconnesso in quanto non ho trovato alcuna documentazione sul contenuto di / proc / tty / driver / serial. Posso solo supporre che la presenza del segnale significhi che il segnale dato è "in questo momento" (o era in passato? O?). Il Serial HOWTO afferma che i segnali aggiuntivi presenti quando il cavo è collegato (segnale di controllo del flusso CTS, DSR "Sono pronto per comunicare", CD "Modem collegato a un altro") sono tutti nella direzione "input". Quindi ci deve essere qualcuno vivo dall'altra parte.
Supponendo che il significato dei segnali sia come descritto nel Serial HOWTO, posso basare la mia decisione sulla presenza, diciamo del segnale CD. Tuttavia non ne sono davvero sicuro.
Quindi la domanda è: il mio metodo è "giusto" o ho delle opzioni migliori di cui non sono a conoscenza?
EDIT: ho fatto alcune osservazioni aggiuntive e ho parlato con il mio collega. Risulta che la presenza o l'assenza di segnali alla fine della linea è un indicatore abbastanza buono dell'attività della porta seriale, su entrambe le estremità. Tuttavia, non è un indicatore della presenza fisica di un cavo. Ogni volta che c'era un programma che scriveva sulla porta seriale erano presenti segnali in uscita (RTS | DTR). Quando l'altra parte stava scrivendo i segnali in arrivo erano presenti (CTS | DSR | CD). Quando nessuno dei lati comunica non ci sono segnali (ciò non significa necessariamente che non sia presente alcun cavo). Non dimenticare che i segnali esatti dipendono dal cablaggio del cavo (ho "null modem con handshaking parziale").