Простое Управление Linux Через Twitter

Доброго времени суток, уважаемые Хабраузеры.

Этот пост вдохновлен внешним видом статьи про твиттер-бота и всякие свистелки и танцы для него.

Представляю вам свое видение API Twitter. Добро пожаловать в кот. Итак, как следует из названия, бот-приложение будет использовать API твитера для управления машиной с Linux на борту.

В качестве языка разработки и, как следствие, библиотеки tweepy был выбран Python. Руководство по первоначальной настройке этой библиотеки можно найти по ссылке, указанной выше.



Конфигурация
Перейдем непосредственно к теме.

Код выполнен как полноценный демон Linux, имеет файл конфигурации и работает с плагинами.

Давайте посмотрим на файл конфигурации:

# Twitter credentials CONSUMER_KEY = '' CONSUMER_SECRET = '' ACCESS_KEY = '' ACCESS_SECRET = '' # base path BASE_PATH = os.path.dirname(__file__) # pid path PID_PATH = BASE_PATH+'/elmot.pid' # people nicknames who can manage system AUTHORIZED_ACCOUNTS = [] # logfile LOG_PATH = BASE_PATH+'/log/elmot.log' ERROR_LOG_PATH = BASE_PATH+'/log/elmot.err' # type None to disable incoming message log INCOMING_MESSAGE_LOG = BASE_PATH+'/log/incoming.log' # run elmot as user (do not use root) RUN_UID = pwd.getpwnam("root").

pw_uid

Все прозрачно.

Для начала работы вам достаточно заполнить поля Consumer_key, Consumer_secret, ключи пользователя — access_key и access_secret, полученные ранее.

Также необходимо добавить в AUTHORIZED_ACCOUNTS ники людей, которым разрешено управлять системой.



Плагины
Перейдем к плагинам.

Весь функционал обеспечивается только с их помощью.

Шаблон плагина выглядит следующим образом:

class Plugin(object): name = 'undefined' keyword = 'undefined' # actions: # 0 - silent # 1 - private message # 2 - tweet to timeline action = 2 controlled = True def __init__(self): print '*', self.name, 'loaded' def execute(self, message): pass # run method only for non controlled plugins # for threading support with python Threads def run(): pass

где name — имя плагина, ключевое слово — его уникальный идентификатор, по которому к нему осуществляется доступ.

Действие — необходимое действие, то есть плагин может молчать, отвечать вам в личном сообщении или писать в вашу ленту.

Контролируемое поле сообщает плагину, будет ли он интерактивным — принимать и обрабатывать сообщения клиентов.

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

Если плагин молчит, он запускает код метода run() в отдельном потоке.



Как это использовать
Мы просто отправляем боту личное сообщение типа «команда ключевого слова args».

Бот проанализирует сообщение и передаст его плагину с соответствующим ключевым словом для обработки.

Например, рассмотрим плагин uptime. Он получает только один параметр — ключевое слово и сообщает время безотказной работы машины, на которой он работает, на своей временной шкале.



Реализованные плагины
conntest — постоянно проверяет связь с удаленным хостом(ами).

Пишет о проблемах в таймлайне.

Removetweets — удаляет n твитов из ленты бота (пример «removetweets 5»).

sshmonitor — мониторинг ssh-сервера на основе анализа auth.log. Пишет в таймлайн об ошибках аутентификации.

uptime - отображает время безотказной работы машины.

Вот и все, вы можете реализовать любой плагин на свой вкус и мониторить что угодно (или перезапускать сервисы, например) через Твиттер.

Спасибо за внимание, жду ваших комментариев.

P.S. Код для github .

П.

П.

С.

Чтобы запустить демон, необходимо использовать ссылку в каталоге bin. Теги: #linux #Социальные сети и сообщества #бот #Twitter #менеджмент

Вместе с данным постом часто просматривают: