7 заметок с тегом

скрипт

Резервное копирование баз SQL

Резервное копирование баз было первым, что я настроил после устройства на эту работу. Потеря данных дважды была одной из причин увольнения предыдущего системного администратора. На текущий момент копий создается две: одна на втором жестком диске сервера и вторая — на внешнем диске. Данная схема будет работать до того момента, пока по перепаду напряжения не сгорят все диски (тьфу-тьфу-тьфу). Но за это отвечает достаточно хороший ИБП.
Оповещение об успешном создании бэкапов приходило мне на почту. Но там было просто письмо без указания конкретной информации. Сегодня наконец-то переделал эту схему и теперь на почту будет приходить более конкретная информация: результат остановки сервера SQL, результат копирования файлов, размер свободного места на обоих дисках и размер последнего созданного бэкапа. Последний пункт был включен по той причине, что xStarter при нехватке свободного места создает файлы нулевого размера, которые, конечно, мне нафиг не нужны. Критические данные сравниваются с эталоном и, в случае расхождений, выделяются жирным красным текстом.
Пока набирал этот текст, в кабинет залетела синица. Это уже третий раз за последние 10 дней. Как эти птицы умудряются пробраться сквозь маленькую щель в приоткрытых окнах — непонятно. И почему-то мне кажется, что это одна и та же птица.

Обновление зеркала NOD32

Итак. Старый скрипт, который работал на сервере не один год по какой-то непонятной причине перестал функционировать. Обновления скачиваются, но установленные антивирусы не могут его нормально обработать. По этой причине было решено подыскать скрипту достойную замену. Интересно, что, в итоге, я получил даже более функциональный и интересный скрипт, чем планировал.
Какие у него есть «плюсы»:

  1. Самообновление. При запуске скрипта он сам пытается найти более новую версию себя и обновиться. Можно отключить или настроить только на уведомление;
  2. Само собой приходят оповещения на почту;
  3. Работает со всеми версиями антивирусов. Тоже можно настроить;
  4. Настраиваются списки серверов обновлений ESET;
  5. Поддержка нескольких языков;
  6. Поиск валидных ключей лицензии в интернете;
  7. Ведение журнала работы с ротацией;
  8. Генерирование либо полноценного html-файла с информацией о текущем состоянии обновлений, либо только таблицы для встраивания ее в другой файл.
  9. Кроссплатформенность.

Из «минусов» я бы назвал создание слишком большого дерева файлов (некоторые из них, на мой взгляд, лишние) и немного некрасивой таблицы. Впрочем, последнее достаточно легко исправляется редактированием соответствующего файла.
Сам скрипт брал отсюда

16 сентября   nod32   замена   зеркало   обновление   скрипт

Исправление ошибок

Уже вечером исправил косяки с новой станцией. После переброса на другую линию питания датчика ds18b20 он заработал. Это радует.
Также вроде бы решил проблему со скриптом отправки данных. Вместо накопления данных в нескольких файлах, размер каждого из которых не превышает 4 кБ, сделал обработу ответа «ERROR NO CHANGES». Если скрипт получает такой ответ, то просто стирается содержимое временного файла. Иными словами, он реагирует так же, как будто получил ответ «ОК». Это, конечно, не решает вопроса длительного отсутствия связи с сервером. Так что будем думать дальше.
Не могу пока что придумать как разместить станцию. По хорошему ее нужно разместить подальше от стены, чтобы исключить ее влияние на показания. Но тут встает вопрос как закрепить круглую металлическую трубку на стене. С другой стороны, самый простой вариант — разместить станцию, прикрутив с наружной стороны лоджии, просто на саморезы. На решение времени осталось не так уж и много — скоро наступят холода, работать будет не очень комфортно.

Тестирование новое метеостанции

Вчера провел на лоджию электричество, только розетку пока что не закреплял. Собрал станцию, включил в розетку и выставил на улицу. К стене дома крепить не стал, закреплю когда она пройдет испытания. К сожалению, почему-то перестал работать один из датчиков — ds18b20. Думал, что где-то нет контакта, подергал все проводки, проверил разъем, но ничего не изменилось. Так как мультиметр остался на работе, то поиск неисправности, похоже, откладывается до понедельника.
Попробовал также настроить станцию на отправку показаний на сервер WeatherUnderground, но с этим вышла какая-то непонятка. В прошивке esp8266 есть только поля для ввода логина и пароля, в то время как в скрипте на роутере, который отправляет показания, надо также указывать ID станции, которая была создана при регистрации на сайте. Вчера ввел качестве логина ID станции, в качестве пароля указал ключ от нее. Потом смотреть журнал отправки было некогда, проверил только сейчас. Появились показания влажности воздуха, но с пропусками. Пока что непонятно, идет отправка или нет, буду наблюдать дальше.
Также в скрипте обнаружилась досадная ошибка, которую нужно исправлять, но я не совсем пока что понимаю как это реализовать. Суть ошибки состоит в том, что в какой-то момент скрипт перестает стирать содержимое временного файла с показаниями. При следующей отправке сервер отвечает не «ОК», а «ERROR NO CHANGES», так как в пакете присутствуют более ранние показания, которые сервер принял, а скрипт заново пытается их отправить. В результате данные начинают накапливаться и через примерно 4 часа размер файла начинает превышать 4 кБ — максимальный размер данных, которые можно отправить на сервер. Как результат данные, которые принимает сервер, обрезаются до 4 кБ. То есть появляется новая ошибка — отсутствует строка с закрывающими «##». По логике нужно начинать записывать данные в другой файл, но как потом искать все файлы с данными — непонятно. Буду думать.

Скрипт передачи данных на сервер narodmon.ru

Как и писал ранее, в какой-то момент надоело, что роутер периодически не может отправить данные на сервер, поэтому пришлось немного подредактировать его. После недельного тестирования отправил его администрации ресурса и, после некоторых уточнений, он был добавлен на сайт. Сейчас он находится в разделе «Справка» — «OpenWRT, OR-WRT» — «6. Скрипт для отправки показаний с отказоустойчивостью». Сам скрипт был размещен на github. Было добавлено краткое описание работы и кусок журнала его работы, из которого видно как он накапливает данные во время отсутствия связи с сервером, а затем, когда она появляется вновь, отправляет все недоставленные пакеты.
Самый «интересный» на мой взгляд момент состоит в том, что в моих планах заменить текущий датчик температуры на другие, которые будут передавать данные через домашний WiFi, что, в свою очередь, означает, что я не смогу воспользоваться пакетом owfs и скрипт будет бесполезен для меня. Хотя возможно, что я оставлю этот датчик в качестве «контрольной группы».

Еще одна модификация скрипта

Сутки наблюдения за модифицированным скриптом отправки данных на narodmon.ru показали, что есть огрехи в выбранном алгоритме — данные отправляются, сервер отвечает с задержкой, которую скрипт воспринимает за «молчание» сервера. Спустя некоторое время, от 15 минут до одного часа, сервер все-таки отвечает за настолько короткий промежуток, что скрипт успевает его «поймать». Пришлось еще раз изменить скрипт. На этот раз был добавлен цикл, в котором данные отправляются, затем он ждет 5 секунд ответ от сервера и, если ответ не получен, повторяет отправку данных. После 5 попыток отправки цикл сбрасывается и начинает накапливать данные во временном файле. Анализ журнала отправки показал, что данные отправляются если не с первого, то со второго раза. Будем продолжать наблюдение.

2017   narodmon   задержка   модификация   скрипт   цикл

Отправка данных на narodmon.ru

Так как порой случались сбои в отправке данных на сервер narodmon (нет интернета, сервер занят либо ничего не отвечает и т. д.) принял решение немного модифицировать скрипт отправки. В идеале, в случае любого сбоя данные должны накапливаться и затем, когда все «устаканиться», скопом быть отправлены.
Скрипт был модифицирован, были внесены несколько дополнительных проверок и он ушел в работу. В ходе работы создается временный файл, куда пишутся все данные. Если сервер narodmon ответил, что данные приняты нормально, то содержимое файла удалялось. В противном случае данные добавляются в этот файл с отметкой времени, когда они были добавлены.
Но, как обычно, не обошлось без ложки дегтя. В случае, если сервер не отвечает достаточно долгое время, данных накапливается много (в обычном варианте замеры проводятся каждые 5 минут). Когда их размер превысит 4 Кб, сервер narodmon, насколько я понимаю, просто откажется принимать такое множество данных. Но тут ничего не попишешь, будем тестировать и смотреть что получится.