Comments 38
Только слабое место в такой конфигурации — если microtick умрёт, или канал до него отвалится, то zabbix никому и ничего не расскажет.
Потому, надёжнее всё-таки слать непосредственно с сервера.
Но и этот вариант интересен для общего развития, спасибо.
Слабых мест у такой конфигурации куча: от проблем с локальной сетью до занятости модема самим микротиком (мне симулировать пока не удалось).
Но, как я писал в самом начале, этот метод подходит мелким предприятиям особенно в наше время. Мелкий бизнес и так пытается любыми средствами сэкономить, не забывая конечно о хоть каком-то мониторинге и какой-то автоматизации.
Думает, что это отличные инструменты. Насколько мне известно, они не умеют работать по RFC2217, но все решается использованием ttyd.
Такую связку я не тестировал.
А нет ttyd для 14.04!
Если кто-нибудь знает утилиту аналогичную ttyd, буду очень признателен.
А чего бы просто sms сервис не использовать? Тот же sms.ru. И проще и дешевле.
Вероятность недоступности внешнего сервиса всё же куда выше, чем даже такой конфигурации.
Но ещё лучше подключить модем к серверу с заббиксом…
Я не использовал этот сервис, как у него с оперативностью? В моем случае СМС доходит в несколько секунд после отправки.
Ну и конечно же момент с отвалом канала связи. В случае со свистком, сам свисток можно научить поднимать свое подключение.
Можно действительно поднять через свисток отдельный канал только для отправки SMS.
Приходят обычно за те же несколько секунд.
Угу, пользовались. но:
1. Внезапно сообщения перестали приходить на часть операторов (хотя деньги исправно списывались )
2. Техподдержка стала не адекватной — на сайте не отвечают, а звонить на московский номер с 10 до 17 МСК как-то не очень удобно
3. ОПСОСЫ спохватились и ну давай повышать тарифы на такую отправку (по ценам 2000-х)

Пока перешли на другого «провайдера», но вообще перейдём на отправку через модем/android-смартфон.
Причём на столько дешевле, что аж бесплатно. Если конечно отправлять уведомления только себе. Хотя можно хранить табличку сопоставления номера телефона получателя и его api-key с сайта.

Но почему не воткнуть модем в сам сервере и не подключить модем локально? Если сервер находится удалённо, то при потери канала связи он и до модема по сети не достучится. В таком случае для мониторинга доступности сервера мониторинга можно воспользоваться услугами стороннего сервиса мониторинга доступности.
Если вопрос адресован мне, то метод статьи рассчитан на совместное использование модема или Заббикс, размещенной в ВМ.
Микротик же сам умеет смс отсылать, а кроме того у него есть API.
Может попробовать через API микротика рассылать?
Проблем у микротика 2: только текстовый режим отправки СМС, а значит о кириллице можно забыть, и ограничение в 1 СМС (160 латинских символов). У скрипта таких ограничений нет.
Хм, а пробросить можно вообще любой USB-COM конвертер? было бы неплохо «подцепить» что-то типа такого:
(4 реле 5/220 плюс входные/выходные линии TTL)
image
kernelchip.ru/Ke-USB24R.php
и перезагружать оборудование в серверной.
(Сам-то микротик вряд-ли создаст модель с одним-двумя 220В реле)
По идее, если микротик увидит оборудование, то и его можно пробросить.
И так же по идее с этим оборудованием можно будет работать через скрипты самого микротика (в вашем случае перезагрузка по СМС и т.д.)
Нужно пробовать, только такой ответ я могу дать.
Я понимаю, надо пробовать втыкать оборудование. Жаль, что если какой-то чип-конвертер не заработает, то с этим ничего не сделать — свои модули к закрытой RouterOS ведь не написать?

А как принять СМС-на микротике? Вычитывать из порта входящие СМС? Но ведь ка каждого Huawei/Zte и проч. свой формат?
Так глубоко я в дебри ROS не лез, скорее всего там ловить нечего.

А по поводу приему СМС — вот информация на их wiki. Прием придется включать после каждой перезагрузки микротика, но это легко решается скриптом на старте.
или учим Zabbix новым трюкам

вы серьезно? такой подход на моей памяти уже используется не меньше 10 лет, не новый он совсем
но за реализацию на баше, конечно, спасибо
по скрипту
это
UDH=`echo $UDH | sed 's/0x//g' | sed 's/,//g' | sed 's/ //g' | sed 's/000A$//g'`

можно заменить на
UDH=`echo $UDH | sed 's/0x\|,\| //g' `

Да, заголовок не ахти, признаю.
В сети я встречал только схему с GSM-шлюзом, работало это все так же через терминал. Но реализовано было на PHP и быстро под мои нужды заточить не удалось. Только вот не помню, был ли там PDU с UDH или нет.

Сейчас проверить не могу, но вполне возможно, что там хватит
sed 's/, 0x//g'

Перепроверю и отпишусь ниже.
Спасибо за скрипт — моя реализация через API работает, но кирилица — это неплохо!
Но не подскажете, почему скрипт не отрабатывает?
root@zabbix:~/alertscripts# ./sms_all 7********** "" "123"
./sms_all: line 18: recode: command not found
Trying 192.168.*.*...
Connected to 192.168.*.*.
Escape character is '^]'.
AT+CMGF=0
OK
AT+CSCS="UCS2"
OK
AT+CMGS=14
> 0011000B919732155403F30008AA00
+CMGS: 103

OK
onnection closed by foreign host.

Настройки поправлены на свой адрес и порт, что видно из лога, но обрывается. На микротике тихо, или нет?
echo: sertcp,info connection to serial remote-access 0.0.0.0:24 from 192.168.*.*:38899
echo: sertcp,debug end of file reading TCP port 24


НОВОЕ: может от того что тестирую в терминале, не убрав -е?
У вас все отрабатывается на ура, +CMGS показывает номер текущего удачно отправленного сообщения.
А вот Recode вы не поставили. Ну и "-e" нужно убрать, иначе это "-е" полезет в строку >.
Хм, может я не достаточно внимательно прочел статью, но о каком Recode речь?
И может оно и отрабатывает на ура :) но смс мне не пришли, хотя через API прекрасно ходят, ровно как и через winbox если отправить.

НОВОЕ: и ведь невнимательно! Спасибо, что тыкнули носом — незаметная строка оказалась, Ctrl+F рулит )
Возник вопрос, как сделать перенос строки, если через командную строку?
Нет, в терминале убунты, тестирую с русскими символами — всё ОК, интересно как перенести строку в сообщении
./sms_all 7******** "" "пошли<?>домой"

Каой символ вводить, чтобы сработал перенос каретки?
Пришло только слово «пошли». Я читал, что для смс есть спец-символ для переноса, здесь.
Это веб-символ, аналог, по-моему, 0x0A, прочитано тут.
Может это как-то в скрипте обрабатывать?
Это делается так:
"bla-bla"\\n"bla-bla"


Из Заббикса отправку сейчас проверю.
Не подходит. Через командную строку приходит
./sms_all 7********** "" "пошли\\nдомой"

пошли\nдомой


echo -e "пошли"\\n"домой" | xargs ./sms_all 7******** ""

пошли
Ладно, напишу полностью
./sms_all 7********** "" "пошли"\\n"домой"

Из Заббикса такая конструкция не работает. Но оно там и не надо :)
Only those users with full accounts are able to leave comments. Log in, please.