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

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

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

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

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

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

Читать далее

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

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

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

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 и мне понравилась его гибкость. Решено было добавить необходимую информацию прямо туда. И сейчас я расскажу, о некоторых его плюшках, которые мало кто использует.
Читать далее

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

[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

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

Читать далее

Bash, препарируем путь до файла

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

Вот у нас есть файл

[user@ora6 ~]$ ls -l  /tmp/project/Геофизическая\ изученность/Таблица\ изученности\ геофизическая.doc

получить путь до файла

[user@ora6 ~]$ dirname '/tmp/project/Геофизическая изученность/Таблица изученности геофизическая.doc'
/tmp/project/Геофизическая изученность

получить имя файла

[user@ora6 ~]$ basename '/tmp/project/Геофизическая изученность/Таблица изученности геофизическая.doc'
Таблица изученности геофизическая.doc

А если вам необходимо получить, к примеру, третью папку пути, то на помощь изящно приходит awk

[user@ora6 ~]$ echo /tmp/project/Геофизическая изученность/Таблица изученности геофизическая.doc | awk -F '/' '{print $4}'
Геофизическая изученность

На этом урок для начинающих закончен 🙂