Системные уведомления в группу Telegram

Сегодня я расскажу, как сделать небольшой комплекс по приему и отправки сообщений от различных сервисов (nagios, zabbix и пр.) в группу Телеграма.

В двух словах. На пограничном сервере живет маленький скрипт — бот телеграмма. Он умеет принимать данные тремя способами

  • либо по почте сообщения (от тех сервисов, что иначе не умеют слать уведомления). Затем выбирая, что необходимо
  • Из параметров командной строки, если его запустили локально
  • По сети, то что пришло откуда-то из вне

Изначально планировалось писать полнофункционального бота, но нам нужен лишь метод SendMessage, поэтому решено было обойтись одной строкой которая делает POST, и шлет наше сообщение в JSON, все согласно API .

Бот добавлен в нашу группу, как администратор. И радует нас своими сообщениями.

Читать далее

Как я обновлял Openfire

Был у нас джаббер сервер, древний Openfire, работал еще на RHEL3. Работал около 7 лет, пришло время обновить и железо (которое стало пару лет назад виртуальным), ОС и всю начинку.

Так как сервер не критичный для работы, решил потестить заодно и Ubuntu 16.

Читать далее

Назад в прошлое, или ntp сервер неточного времени

Всем известно, что для получения точного времени в ОС, необходимо, чтобы она синхронизировалась хотя бы с одним ntp сервером. А что делать, если точное время нужно, но не совсем. К примеру, отличающееся от текущего на какую-то дельту. В любую сторону. К примеру, на 10 лет назад, или вперед…

Ну и договоримся, что под точным временем не будем понимать не доли микросекунд,а хотя бы до секунды. Поехали!
Читать далее

Пишем бота для Telegram на Perl

В начале лет telegram.org запустил API для создания ботов. И на данный момент их появилось великое множество, полезных и бесполезных.

Для тех, кто хочет серьезно освоить API советую добавить ссылку https://core.telegram.org/bots в избранное и медленно, на несколько раз, прочитать все. Это старт.

А теперь к делу. В конце августа некто Roberto Frenna, сделал модуль для Perl, реализующий работу с API. Я попробовал его, и выяснил, что на perl 5.8.8 (да, иногда бывает и такое старье в продакшене), он работает некорректно. Один запрос в багтрекер и через 2 дня все работает изумительно.

Модуль есть на https://github.com/Robertof/perl-www-telegram-botapi, либо в CPAN.

Для начала работы, вам необходимо создать бота и получить токен авторизации. Это делается с помощью @BotFather — другого бота, который управляет всеми ботами.
Читать далее

Перенос почты из TheBat на сервер Cyrus-IMAP

Так исторически сложилось, что у нас много лет используется корпоративная версия почтового клиента TheBat 3.x!
Все пользователи очень привыкли к ней, накоплена огромная адресная книга в нем. Но куча ограничений (TBB файл не более 2Гб, проблемы с TLS, заточенность под Windows) вновь и вновь поднимает вопрос о переходе на что-то иное.
Читать далее

Кастомизация веб-интерфейса CUPS

У нас на производстве — N различных печатающих устройств. Те которые печатают на листах A4, A3 — не тема сегодняшнего разговора. А вот те, что печатают на рулонах от А1 до А0 интересуют куда больше. Часто, пользователи не знают\забывают в каком плоттере, какой размерности загружена бумага. Отсюда брак и излишние траты. И начальник озадачил меня, реализовать возможность смотреть какая бумага загружена, сколько ее осталось. Делать отдельный раздел на корпоративном интранет портале — смысла нет, мало кто будет туда смотреть. В то же время у многих открыт веб-интерфейс очередей печати принт-сервера на базе CUPS. Раньше я писал backend для него, для преобразования заданий в pdf и мне понравилась его гибкость. Решено было добавить необходимую информацию прямо туда. И сейчас я расскажу, о некоторых его плюшках, которые мало кто использует.
Читать далее

Lazarus, отображение интерфейсных элементов в разных ОС

Сегодня мы поговорим о кроссплатформенном программировании 🙂 и его проблемах. Есть такая штука — Lazarus. Это не что иное, как open source реализация знакомого многим Delphi. Практически все 1 в 1, да еще и изначальная кроссплатформенность. Код написаный на Windows, без проблем переноситься на Linux, WinCE, Mac или куда пожелаете. Поддержка множества графических библиотек для построения интерфейсов (gtk, gtk2, win32, wince, carbon, cocoa, fpgui) делает очень быстрым разработку интерфейса программы, а простота языка (freepascal) позволяет стремительно писать код. Это не панацея, но для некоторых вещей — вполне достойное решение.

Но т.к. графические виджеты, по разному выглядят в разных ОС, встает проблема, как их синхронизировать и корректировать в зависимости от графической подсистемы. Обычно, самое что бросается в глаза — это разница размеров и начертания шрифтов между Linux и Windows. Привести примерно к одному виду позволит небольшой хак.
Читать далее

Автомонтировка cd/dvd/bd и расшаривание по лейблу

Предупреждение: Нижеописанное решение можно смело отнести к так называемым «костылям», но в наших условиях оно работает стабильно (плевок*3) 😀

Для внутренних нужд у нас есть отдельно стоящий системник с 3 BD приводами. Доступ туда лишь консольный, либо через NX. Внутри живет что-то из последних Ubuntu. Мы пишем на нем BD диски, индексируем Архивариусом 3000 и убираем на долгую память.

В процессе этих дел возникла задача. Очень хочется, чтобы

  • Диск монтировался сразу как только попал в привод (и демонтировался) т.е. без лишнего клика в файловом менеджере. Ну как в Windows т.е.
  • Диск был доступен по самбовской шаре с именем из метки диска.

Читать далее

Perl 5.14. для CentOS 6 x86_64

Конец света прошёл, с чем вас и поздравляю. Ну а у меня тем временем возникла одна задача, для ее реализации нужен был Perl не ниже 5.12. Печально то, что на машине под CentOS 6, штатно идет лишь perl 5.10 (а под CentOS 5.x лишь perl 5.8.x).
Разрешить эту проблему можно тремя способами

  • Perlbrew. Это позволит иметь хоть все версии перла на машине, и переключаться между ними по мере необходимости. Удобно, но не всегда.
  • Установить непосредственно из исходников. Универсально и для всех, но еще менее удобно, особенно в будущем
  • Придумать, что-то свое. Желательно в rpm

Читать далее

База знаний. Надо? Надо!

Задумывались ли вы, о том, как часто сотруднику службы поддержки приходится отвечать на одни и те же вопросы.

  • Как поменять пароль?
  • Я отправляю 100Гб почтой, а мне приходит непонятное письмо, что делать?
  • Где посмотреть адресную книгу отдела АБВГД?
  • Как поменять столбцы в тектовом файле?
  • Мне пришло письмо «иероглифами», что делать?
  • и так далее

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

Т.е. нужно какое-то хранилище информации, структурированное, гипертекстовое. Желательно с возможностью правки самим пользователем (с заделом на будущее, когда некоторые осознанные работники будут описывать свои знания для других), с поиском. Читать далее