Но от этого возникает проблемка, всп-ке модем не присунешь. Сначала я пользовал E-Mail->SMS шлюз сервиcа SMS.RU, но как выяснилось, они совсем на голову отмороженные. По этому пришлось придумать свое решение под катком.
При подключении к компу она создает виртуальную сеть, где выполняет роль маршрутизатора. Так-же имеет на борту вафля-точку доступа, и может раздавать инет по вафле если его просто включить в розетку. У него на борту есть свой веб-интерфейс которым оно управляется.
Но мне оно как раздатчик интернета совсем не интересено, мне надо слать SMS-ки. Выяснилось что “по старинке” отправить SMS-ку AT-командой оно не может, но может ее отправить через веб-интерфейс.
На просторах GitHub был найден проект Pablo Santa Cruz‘а, это питоновская либа, которая взаимодействует с веб-интерфейсом модема, эмитирует вход в админку и отправляет через нее SMS-ку.
Появилось некоторое понимание метода решения проблемы: Нужно место где будет стартовать скрипт, который будет работать с модемом, при этом Zabbix должен иметь доступ к скрипту.
Первая мысль которая у меня возникла, впихнуть модем в Raspberry Pi на котором будет крутится скрипт и организовать доступ Zabbix’а к Raspberry Pi, но эта идея была отметена как нежелательная.
Потом я вспомнил, что в моем Микротике есть USB-порт, и он обучен работать с этими модемами. Было решено замутить вот такое:
Тоесть питон-скрипт Пабло на ходится непосредственно на Zabbix-сервере, а от него проброшена тунелька до виртуальнй сетевухи модема, которая от-NATчена, чтобы модем думал что к нему стучится не Zabbix а локальный юзер и легитимно шлет SMS-ку.
Сказано – сделано:
Микротик без проблем увидел модем:
Был настроен IPSec и NAT, Zabbix-сервер увидел модем по дефолтному адресу Хуавея 192.168.8.1.
Была поставлена указанная либа и накатан скрипт отправки на базе дефолтного:
# cat /usr/lib/zabbix/alertscripts/E8372.py
#!/usr/bin/python3 import sys from pprint import pprint from huaweisms.api import monitoring, user, sms from huaweisms.api.common import ApiCtx USER = "admin" PASSWORD = "DeR_PaSsWoRd" PHONE_NUMBER = sys.argv[1] # BEFORE running, do MAKE SURE heaweisms.api.config has the CORRECT VALUES for your MODEM def get_session(): return user.quick_login(USER, PASSWORD) def valid_context(ctx): # type: (ApiCtx) -> bool sl = user.state_login(ctx) if sl['type'] == 'response' and sl['response']['State'] != -1: return True return False ctx = get_session() sent = sms.send_sms(ctx, PHONE_NUMBER, sys.argv[2])
Действие было настроено практическит дефолтно:
Схема стартанула сразу, без запинки:
Пока я тестирую тариф интернет-вещей от MTS, но аналогичный тариф от Теле2 кажется вкуснее, заказал симку жду…
Спасибо за инструкцию!!!
Настроил то же самое на модеме Huawei 3372. Всё работает.
Единственное я бы добавил как поставить либу Huawei sms sender.
Я сделал это с помощью команды “pip install huawei-modem-api-client”.
Точнее в моём случае “pip3 install huawei-modem-api-client”.
И ещё на модеме пришлось включить авторицию (По-умолчанию её не было). Без этого скрипт на работал.
Рад что пригодилось, так держать!
Благодарю автора за инструкцию.
В моем случае для импорта пакета использовал команду sudo -H pip3 install huawei-modem-api-client, т.к. рабочий каталог Python для пользователя zabbix другой.
В противном случае возникала ошибка AttributeError: module ‘six’ has no attribute ‘ensure_str’
Может, кому пригодится.