Системные уведомления в группу 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 — другого бота, который управляет всеми ботами.
Читать далее

Google Drive for Linux. Есть ли жизнь?

Корпорация добра приносит много полезного в нашу жизнь. Но вместе с этим, иногда, у ней случаются невероятные «выкрутасы», которые сложно понять. То Google Reader закроют, то многолет не могут выпустить клиента для Google Drive под Linux. У ИТ сообщества кончились идеи почему так происходит. Вот и я столкнулся с этим недоразумением. Давайте по-порядку.

Понадобилось мне для одного из проектов 10Гб стороннего файлового хранилища. Пошел искать, что бы найти подходящее и не очень дорогое. Основное требования консольный доступ из linux (да и не просто под Убутнту, а под RHEL\CentOS т.е. без новомодных рюшечек и фишечек), все остальное не важно.

Вкратце, о том, какие сервисы перебрал (самодеятельность в виде scp\rsync не считается)..

Читать далее

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

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

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

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

Архиваторы. Размышления

Некоторое время назад, возникла необходимость записать на BD-R некоторое количество SEG-Y файлов. Размер носителя 25Gb, файлов много больше. Решил воспользоваться архиватором, обычно это 7z, настройки по-умолчанию.
Читать далее

Perl, великий и могучий

Заметка на правах шпаргалки.

Попытался я намедни из массива внести в хеш несколько элементов слеив их в строку с разделителем. Первоначально написал вот так

my %add=(); my @items=();
...
open my $ADDFILE, '<', $addon || croak $!;
while (<$ADDFILE>) {
    chomp;
    my @items = split /;/x;
    $add{ $items[1] } = join ';', $items[$_] for ( 4, 7, 10 );
}
close $ADDFILE;
...

Все как обычно, но кроме перечисления элементов @items, решил завернуть это в for, указав их индексы. Почти, но не сработало 🙂

И тут я обнаружил (да для меня это, как ни странно, было ново), что можно подступится к элементам не через скалярное обращение $items[n], а через списочное и можно указать несколько индексов. Т.е. вышло вот так

my %add=(); my @items=();
....
open my $ADDFILE, '<', $addon || croak $!;
while (<$ADDFILE>) {
    chomp;
    my @items = split /;/x;
    $add{ $items[1] } = join ';', @items[ 4, 7, 10 ];
}
close $ADDFILE;
...

p.s. Кстати, весьма советую поставить perl-support плагин для vim. Очень удобно приводить код в порядок, и отдатвать на съедение perl critique.

Однако, как закрутили то..

[root@mailru]# ll /usr/bin/mailq

lrwxrwxrwx 1 root root 27 May 28  2009 /usr/bin/mailq -> /etc/alternatives/mta-mailq
[root@mailru]# ll /etc/alternatives/mta-mailq
lrwxrwxrwx 1 root root 23 Jun  5 09:34 /etc/alternatives/mta-mailq -> /usr/bin/mailq.sendmail
[root@mailru]# ll /usr/bin/mailq.sendmail
lrwxrwxrwx 1 root root 23 Jun  5 09:28 /usr/bin/mailq.sendmail -> ../../usr/sbin/sendmail
[root@mailru]# ll ../../usr/sbin/sendmail
lrwxrwxrwx 1 root root 21 May 28  2009 ../../usr/sbin/sendmail -> /etc/alternatives/mta
[root@mailru]# ll /etc/alternatives/mta
lrwxrwxrwx 1 root root 27 Jun  5 09:34 /etc/alternatives/mta -> /usr/sbin/sendmail.sendmail
[root@mailru]# ll /usr/sbin/sendmail.sendmail
-rwxr-sr-x 1 root smmsp 775064 Aug 11  2011 /usr/sbin/sendmail.sendmail