У меня есть кластер высокой доступности (Heartbeat), подключенный через последовательную линию и две сетевые карты. Я хотел бы установить скрипт мониторинга, способный распознавать отключенную последовательную линию (в основном на тот же вопрос был дан ответ в SO , однако я не удовлетворен таким общим ответом).
Я не могу просто открыть последовательное устройство и прочитать данные самостоятельно, поскольку последовательная линия открывается Heartbeat.
Поэтому я начал искать некоторые косвенные подсказки. Единственное отличие, которое я обнаружил, заключается в содержании /proc/tty/driver/serial
. Вот как это выглядит, когда он подключен:
# 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
И когда отключено:
# 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
Я не достаточно уверен, чтобы решить, что сигналы, перечисленные в конце строки, имеют значение подключенного / отключенного кабеля, так как я не нашел никакой документации по содержанию / proc / tty / driver / serial. Я могу только предположить, что наличие сигнала означает, что данный сигнал включен «прямо сейчас» (или был в недавнем прошлом? Или?). В Serial HOWTO говорится, что дополнительные сигналы, присутствующие при подключении кабеля (сигнал управления потоком CTS, DSR «Я готов к общению», CD «Модем подключен к другому»), все в направлении «ввода». Так что на другом конце должен быть кто-то живой.
Предполагая, что значение сигналов соответствует описанию в Serial HOWTO, я могу основывать свое решение на наличии, скажем, сигнала CD. Однако я не совсем уверен.
Итак, вопрос в следующем: мой метод «правильный», или у меня есть какие-то лучшие варианты, о которых я не знаю?
РЕДАКТИРОВАТЬ: Я сделал некоторые дополнительные замечания и поговорил с моим коллегой. Оказывается, наличие или отсутствие сигналов в конце линии является неплохим индикатором активности последовательного порта на обоих концах. Однако это не показатель физического присутствия кабеля. Всякий раз, когда происходила запись программы в последовательный порт, присутствовали исходящие сигналы (RTS | DTR). Когда другая сторона писала входящие сигналы присутствовали (CTS | DSR | CD). Когда ни одна из сторон не связывается, сигналов вообще нет (это не обязательно означает, что кабеля нет). Не забывайте, что точные сигналы зависят от проводки кабеля (у меня «нуль-модем с частичным подтверждением связи»).