Ich habe einen Hochverfügbarkeitscluster (Heartbeat), der über eine serielle Leitung und zwei Ethernet-NICs verbunden ist. Ich möchte ein Überwachungsskript einrichten, das in der Lage ist, getrennte serielle Leitungen zu erkennen (im Grunde wurde dieselbe Frage bei SO beantwortet , aber ich bin mit einer solchen allgemeinen Antwort nicht zufrieden).
Ich kann das serielle Gerät nicht einfach öffnen und die Daten selbst lesen, da die serielle Leitung von Heartbeat geöffnet wird.
Also fing ich an, nach indirekten Hinweisen zu suchen. Der einzige Unterschied, den ich bisher gefunden habe, ist der Inhalt von /proc/tty/driver/serial
. So sieht es aus, wenn es verbunden ist:
# 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
Und wenn die Verbindung getrennt ist:
# 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
Ich bin nicht sicher genug, um zu entscheiden, dass die am Ende der Zeile aufgeführten Signale genau die Bedeutung eines verbundenen / getrennten Kabels haben, da ich keine Dokumentation zum Inhalt von / proc / tty / driver / serial gefunden habe. Ich kann nur annehmen, dass das Vorhandensein des Signals bedeutet, dass das gegebene Signal "gerade" eingeschaltet ist (oder in der jüngeren Vergangenheit war? Oder?). Das serielle HOWTO sagt, dass zusätzliche Signale, die beim Anschließen des Kabels vorhanden sind (CTS-Flusssteuersignal, DSR "Ich bin bereit zu kommunizieren", CD "Modem mit einem anderen verbunden"), alle in der "Eingangs" -Richtung sind. Am anderen Ende muss also jemand am Leben sein.
Unter der Annahme, dass die Bedeutung von Signalen der im seriellen HOWTO beschriebenen entspricht, kann ich meine Entscheidung auf das Vorhandensein von beispielsweise CD-Signalen stützen. Ich bin mir jedoch nicht sicher.
Die Frage ist also: Ist meine Methode "richtig" oder habe ich bessere Optionen, die mir nicht bekannt sind?
EDIT: Ich habe einige zusätzliche Beobachtungen gemacht und ein Gespräch mit meinem Kollegen geführt. Es stellt sich heraus, dass das Vorhandensein oder Fehlen von Signalen am Ende der Leitung an beiden Enden ein recht guter Indikator für die Aktivität der seriellen Schnittstelle ist. Dies ist jedoch kein Indikator für das physische Vorhandensein eines Kabels. Immer wenn ein Programm auf die serielle Schnittstelle schrieb, waren ausgehende Signale vorhanden (RTS | DTR). Beim Schreiben der anderen Seite waren eingehende Signale vorhanden (CTS | DSR | CD). Wenn keine der Seiten kommuniziert, gibt es überhaupt keine Signale (das bedeutet nicht unbedingt, dass kein Kabel vorhanden ist). Vergessen Sie nicht, dass die genauen Signale von der Verkabelung des Kabels abhängen (ich habe "Nullmodem mit teilweisem Handshake").