Eu tenho um cluster de alta disponibilidade (Heartbeat) conectado via linha serial e duas NICs Ethernet. Gostaria de configurar um script de monitoramento capaz de reconhecer a linha serial desconectada (basicamente a mesma pergunta foi respondida no SO , no entanto, não estou satisfeito com uma resposta tão geral).
Não consigo simplesmente abrir o dispositivo serial e ler os dados, pois a linha serial é aberta pelo Heartbeat.
Então comecei a procurar pistas indiretas. A única diferença que encontrei até agora está no conteúdo de /proc/tty/driver/serial
. É assim que fica quando 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
E quando desconectado:
# 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
Não tenho confiança suficiente para decidir que os sinais listados no final da linha têm o mesmo significado de cabo conectado / desconectado, pois não encontrei nenhuma documentação sobre o conteúdo do / proc / tty / driver / serial. Só posso supor que a presença do sinal significa que o sinal fornecido está "no momento" (ou estava no passado recente? Ou?). O HOWTO Serial diz que os sinais adicionais presentes quando o cabo está conectado (sinal de controle de fluxo CTS, DSR "Estou pronto para me comunicar", CD "Modem conectado a outro") estão todos na direção "entrada". Então tem que haver alguém vivo do outro lado.
Supondo que o significado dos sinais seja como descrito no Serial HOWTO, posso basear minha decisão na presença de, digamos, sinal de CD. No entanto, não tenho muita certeza.
Portanto, a pergunta é: meu método está "correto" ou tenho melhores opções que não conheço?
EDIT: Fiz algumas observações adicionais e conversei com meu colega. Acontece que a presença ou ausência de sinais no final da linha é um bom indicador da atividade da porta serial, nos dois extremos. No entanto, não é um indicador da presença física de um cabo. Sempre que havia um programa gravando sinais de saída da porta serial, estavam presentes (RTS | DTR). Quando o outro lado estava gravando, havia sinais de entrada (CTS | DSR | CD). Quando nenhum dos lados se comunica, não há sinais (isso não significa necessariamente que não há cabo). Não esqueça que os sinais exatos dependem da fiação do cabo (eu tenho "modem nulo com handshake parcial").