Доброго времени суток, уважаемые Хабраузеры.
Этот пост вдохновлен внешним видом статьи про твиттер-бота и всякие свистелки и танцы для него.
Представляю вам свое видение 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 #менеджмент
-
Гурмания 3: Зоопарк
19 Oct, 24 -
Мир
19 Oct, 24 -
Почему Акции Nvidia Выросли На 300% За Год
19 Oct, 24 -
Как Наша Компания Разделила Отдел Разработки
19 Oct, 24 -
Дайджест Laravel (13–19 Июля 2020 Г.)
19 Oct, 24 -
Работайте На Результат
19 Oct, 24 -
В Индии Заблокировано Более 30 Веб-Сайтов
19 Oct, 24 -
Беспроводная Сеть – Беззаботный Веб-Серфинг?
19 Oct, 24