Столкнулся во второй раз с такой проблемой: УТМ перестает отправлять документы по различным причинам, например "сломался" сертификат RSA, при этом порты доступны, а документы копятся на сервере и через 3 дня перестанет продаваться алкоголь на кассе. На веб страничке УТМ есть информация о дате самого старого не отправленного розничного документа. Накидал три строчки на питоне по изъятию этой информации:
Код:
import requests
from io import StringIO
from lxml import etree
from datetime import datetime
tree = etree.parse(StringIO(requests.get('http://127.0.0.1:8080').text), etree.HTMLParser())
date = tree.xpath('//div[@class = "tab-pane fade in active"]/pre/text()')[3][0:10]
try:
date = datetime.strptime(date,'%Y-%m-%d')
except ValueError:
d = None
if isinstance(date, datetime):
msg = 'WARNING\n'
else:
msg = 'OK\n'
with open('utm_lastdoc_check.txt', 'w') as output_file:output_file.write(msg.encode('utf-8'))
Скрипт должен запускаться на сервере УТМ под Linux. Нужен Python 2.7 и к нему модуль requests. Парсится веб страница УТМ и, если дата самого старого не отправленного розничного документа есть, а это означает, что документы "задерживаются" в УТМ, то пишем WARNING в файл, если нет - то пишем OK.
Скрипт запускаю по cron раз в час. Дальнейшие дествия уже зависят от Вашей системы мониторинга. Я к примеру делаю остальное через zabbix. Если кому интересно напишу инструкцию и для него.