Tengo un clúster de alta disponibilidad (Heartbeat) conectado a través de una línea serie y dos NIC de Ethernet. Me gustaría configurar un script de monitoreo capaz de reconocer la línea serial desconectada (básicamente la misma pregunta fue respondida en SO , sin embargo, no estoy satisfecho con una respuesta tan general).
No puedo simplemente abrir el dispositivo en serie y leer los datos yo mismo, ya que Heartbeat abre la línea en serie.
Entonces comencé a buscar algunas pistas indirectas. La única diferencia que he encontrado hasta ahora está en el contenido de /proc/tty/driver/serial
. Así es como se ve cuando está conectado:
# 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
Y cuando se desconecta:
# 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
No tengo la confianza suficiente para decidir que las señales enumeradas al final de la línea tienen el mismo significado de cable conectado / desconectado ya que no he encontrado ninguna documentación sobre el contenido de / proc / tty / driver / serial. Solo puedo suponer que la presencia de la señal significa que la señal dada está en "en este momento" (¿o fue en el pasado reciente? O?). El COMO en Serie dice que las señales adicionales presentes cuando el cable está conectado (señal de control de flujo CTS, DSR "Estoy listo para comunicar", CD "Módem conectado a otro") están todas en la dirección de "entrada". Entonces tiene que haber alguien vivo en el otro extremo.
Suponiendo que el significado de las señales es como se describe en el COMO de serie, puedo basar mi decisión en la presencia de, por ejemplo, señal de CD. Sin embargo, no estoy realmente seguro.
Entonces la pregunta es: ¿mi método es "correcto" o tengo mejores opciones que desconozco?
EDITAR: Hice algunas observaciones adicionales y tuve una conversación con mi colega. Resulta que la presencia o ausencia de señales al final de la línea es un indicador bastante bueno de la actividad del puerto serie, en ambos extremos. Sin embargo, no es un indicador de la presencia física de un cable. Siempre que había un programa que escribía en el puerto serie, las señales salientes estaban presentes (RTS | DTR). Cuando el otro lado estaba escribiendo, las señales entrantes estaban presentes (CTS | DSR | CD). Cuando ninguno de los lados se comunica, no hay señales en absoluto (eso no significa necesariamente que no haya cable presente). No olvide que las señales exactas dependen del cableado del cable (tengo "módem nulo con apretón de manos parcial").