J'ai un cluster à haute disponibilité (Heartbeat) connecté via une ligne série et deux cartes réseau Ethernet. Je voudrais mettre en place un script de surveillance capable de reconnaître la ligne série déconnectée (essentiellement la même question a été répondue à SO , mais je ne suis pas satisfait d'une réponse aussi générale).
Je ne peux pas simplement ouvrir le périphérique série et lire les données moi-même, car la ligne série est ouverte par Heartbeat.
J'ai donc commencé à chercher des indices indirects. La seule différence que j'ai trouvée jusqu'à présent réside dans le contenu de /proc/tty/driver/serial
. Voici à quoi cela ressemble quand il est connecté:
# 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
Et une fois déconnecté:
# 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
Je ne suis pas assez confiant pour décider que les signaux répertoriés à la fin de la ligne ont la même signification que de câble connecté / déconnecté car je n'ai trouvé aucune documentation sur le contenu de / proc / tty / driver / serial. Je peux seulement supposer que la présence du signal signifie que le signal donné est activé "en ce moment" (ou était dans un passé récent? Ou?). Le Serial HOWTO dit que les signaux supplémentaires présents lorsque le câble est connecté (signal de contrôle de flux CTS, DSR "Je suis prêt à communiquer", CD "Modem connecté à un autre") sont tous dans le sens "entrée". Il doit donc y avoir quelqu'un en vie à l'autre bout.
En supposant que la signification des signaux est telle que décrite dans le Serial HOWTO, je peux baser ma décision sur la présence, par exemple, d'un signal CD. Mais je n'en suis pas vraiment sûr.
La question est donc: ma méthode est-elle "correcte", ou ai-je de meilleures options que je ne connais pas?
EDIT: J'ai fait quelques observations supplémentaires et j'ai eu une conversation avec mon collègue. Il s'avère que la présence ou l'absence de signaux à la fin de la ligne est un assez bon indicateur de l'activité du port série, aux deux extrémités. Cependant, ce n'est pas un indicateur de la présence physique d'un câble. Chaque fois qu'un programme écrivait sur le port série, des signaux sortants étaient présents (RTS | DTR). Lorsque l'autre côté écrivait, des signaux entrants étaient présents (CTS | DSR | CD). Quand aucun des côtés ne communique, il n'y a aucun signal (cela ne signifie pas nécessairement qu'il n'y a pas de câble présent). N'oubliez pas que les signaux exacts dépendent du câblage du câble (j'ai "null modem avec prise de contact partielle").