Парсим ini files

PostImage

Photo by Sincerely Media on Unsplash

Добрый день случайный читатель.

В рамках одного проекта потребовалось получить значение переменной из ini файла.

И вроде как решение простое, однострочный скрипт ввида:

grep dbname db.conf | awk -F '=' '{ print $2 }'

Но что делать если значений будет несколько в разных секциях? То уже в однострочный скрипт не уложишься.

Поиск решения для linux результатов не дал :(, хотя может быть я просто ленивый и не все результаты поиска просмотрел.

Решение было принято быстро, берем Python и пакет configparser. Результат ini-file.

Низкоуровневый анализ блочных устройств Linux

PostImage

Photo by Vincent Botta on Unsplash

Добрый день, коллеги!

В данной статье я хотел бы рассказать и показать как проводить низкоуровневый анализ производительности и работы блочных устройств в Linux.

Читать далее…

Тестовое задание для соискателей. Linux.

PostImage

Photo by Arian Darvishi on Unsplash

Коллеги, добрый день!

Перейдя на должность руководителя группы, стал более часто проводить собеседования. И проблема с кадрами, в регионе, дает о себе знать.

Выход один — растить специалиста!

И главный вопрос становится, а готов ли он?! Решено было сделать тестовое задание, которое отправляли потенциальным коллегам. Для проверки было создан образ виртуальной машины, специально поломанный.

Восстановление данной VM ответит на следующие вопросы:
  • Сброс пароля root

  • Работа с fstab

  • Iptables|firewalld

  • Маршрутизация linux

  • Сервисы systemd

  • LVM

  • Расширенные атрибуты файлов

  • Восстановление работы PostgreSQL

  • Восстановление работы bash скрипта.

Ну и ссылки на задание:

Дальше планирую создать еще одну ВМ, для более продвинутых администраторов, так что ждем еще одну статью.

Собираем TCP|UDP сессии в Linux

PostImage

Photo by Hans-Peter Gauster on Unsplash

Приветствую тебя мой дорогой друг!

Как говорится “назвался компьютерщиком, полезай в ИТ отдел”.

Преамбула

Попался мне как то на глаза скрипт, для сбора всех соединений по хосту, ну что идея хорошая, запилили в забикс, ждем… 5 минут… 10 минут… Нет значений.

Ошибка поразила, скрипт не смог уложится в отведенные, забиксом, 30 секунд.

Тут по идее должна быть картинка типа: “30 секунд, Карл!!!”.

Не буду описывать свое удивление когда я прочитал скрипт, вкратце это кровь из глаз, куча матерных слов и истеричный смех, т.к. использовалось куча внешних утилит, это все парсилось, накладывались regexp и т.д. и т.п. И это все на Linux, где получить любое значение можно просто прочитав файл!!!

Читать далее…

Решение проблемы SSH(pam_limits.so)

PostImage

Photo by Florian Krumm on Unsplash

Коллеги, добрый день!

Работая с 2007 года в сапорте, сталкивался со многими проблемами, об одной из которой хотелось бы рассказать.

Введение.

Как обычно ничего не предвещало беды, и в предвкушении выходных, в конце рабочего дня приходит сообщение об ошибках работы тригеров мониторинга на одном из продакшн серверов обслуживающих клиентов от Калининграда до Сахалина.

Беглый анализ статуса сервера показал, что проблема только с тригерами, которые для запуска вызывают оболочку Bash, что показалось очень странно. Второй странностью показалось что сервер в Проде, и проблема фиксировалась уже около 30 минут, обращений пользователей не было! Опрос коллег в рабочем чате, определил, что сегодня на этом сервере решали проблему с “too many open files” и решили ее. Запускаем SSH сессию на сервер, и… Подключения НЕТ!!!

Читать далее…

pySpoolerRenamer — или как переименовывать поток файлов

PostImage

Photo by Ankush Minda on Unsplash

Доброго времени суток, мой дорогой друг!

Работая с большими потоками данных и их анализом, сталкиваешься с проблемой определения принадлежности файла, его источника, т.к. 99% от всех потоков генерируют бездушные электрические машины.

Порой бывает сложно определить откуда пришел файл sasder345asd.txt или 123_HDR-Tas.csv(на самом деле это просто набор букв, в большинстве случаев имена файлов имеют структурированное имя, но это все равно тяжело читать человеку).

Читать далее…

pyRsyncBackup

PostImage

Photo by Everyday basics on Unsplash

Доброго времени суток, случайный читатель!

И так о чем хочу рассказать сегодня, в недрах одного небольшого отдела, одной небольшой компании родился небольшой скрипт — и назвали этот скрипт pyRsyncBackup

Для чего?! Задача была следующая:
  • Резервное копирование конфигурационных файлов.

  • Инициатор должен быть из вне. Т.к. NAT.

  • Не до всех узлов есть прямой доступ.

Сначала был создан прототип, который выполнял все эти функции, работал по крону и все были довольны, пока количество серверов не перевалило за overdohuya. + выход нового софта добавлял работы по переконфигурации бекапов.

От сюда вылезли еще требования:
  • Автообнаружение модулей резервного копирования.

  • Работа в режиме демона.

Что и было реализовано в текущей версии pyRsyncBackup, и так что она позволяет:
  • run as daemon.

  • Автообнаружение модулей резервного копирования.

  • Резервное копирование через промежуточные узлы.

Что ждать дальше:
  • уход от СУБД PostgreSQL, возможно в память, возможно в SQLite.

  • переработка функционала proxy, т.к. часть хостов отстреливает SSH подключения(PAM)

  • Веб интерфейс для забора backup файлов

Но данными доработками займусь, после создания прототипа системы контроля доступа, если хватит сил и времени, то возможно и в этом году.

Спасибо.

Nagios Monitoring Black Cartridge Printer Brother DCP-7065DN

PostImage

Photo by Bank Phrom on Unsplash

В хозяйстве имеется 4 принтера Brother DCP-7065DN, захотелось мониторить состояние картриджей, и столкнулся со следующими проблемами:
  1. Плагин для Nagios check_snmp_printer не подходит, возвращает не верное значение, хотя для мониторинга состояния барабана он отлично подходит.

  2. Не нашел в сети какой SNMP OID состояния картриджа, для этого принтера.

Написал в тех. поддержку Brother… И неожиданно для себя они ответили и сообщили мне OID для моего принтера. Открыл любимый VIM и написал bash-скрипт для Nagios. И теперь делюсь им check_snmp_brother.

Кладем данный скрипт в папку с плагинами Nagios, выставляем нужные права, и ставим флаг на выполнение.

Настройка в Nagios

define command{
command_name  check_snmp_brother
command_line  $USER1$/check_snmp_brother $ARG1$ $HOSTADDRESS$ $ARG2$ $ARG3$
}
define service{
        use                          default-service
        host_name                    PRINTER
        service_description          Toner Black
        check_command                check_snmp_brother!public!20!10
        }

Скрипт корректно работает для модели Brother DCP-7065DN. Если будет работать для других моделей, буду рад если вы мне сообщите.