Automation: Часть 1

Automation: Часть 1

Valter
Доброго времени суток, %username%. Сегодня микрофон вещания в эфире переходит в руки Valter и мы поговорим об автоматизации работы с веб-сервисами с помощью скриптов:

Консольные клиенты есть практически для всех популярных веб‐сервисов. Многие из них не блещут возможностями и тем более удобством в работе. Но их можно заскриптовать и приспособить для совершенно неожиданных целей: превратить Google Calendar в систему удаленного исполнения команд, использовать Telegram для поиска украденного ноутбука, мониторить сервер с помощью Twitter, организовать скрытый стриминг на YouTube. Об этих и других трюках мы и поговорим.

TELEGRAM КАК ИНСТРУМЕНТ ЗАЩИТЫ НОУТБУКА

О том, как использовать Telegram для ведения заметок и обмена ссылками между разными устройствами, знают все. Но что, если пойти дальше и превратить его в нечто большее? Например, систему сигнализации, которая будет информировать тебя, когда кто‐то посторонний включит ноутбук?

Для этого можно использовать консольный клиент telegram‐cli и такой скрипт:

#!/bin/bash
ffmpeg ‐y ‐t 1 ‐f video4linux2 ‐s 640x480 ‐r 30 ‐i /dev/video0 ‐f
image2 $HOME/webcam.png
sleep 5m
scrot ‐z %HOME/screen.png
telegram‐cli ‐W ‐D ‐e "send_photo @USERNAME $HOME/webcam.png `date`"
telegram‐cli ‐W ‐D ‐e "send_photo @USERNAME $HOME/screen.png `date`"
notify‐send ‐i dialog‐warning ‐t 10000 "Ты. Да, да. Ты." "Тебе кто разрешил?"

Скрипт следует поместить в автозагрузку. Сразу после старта машины он сделает фотографию с веб‐камеры, снимет скриншот, отправит все это указанному пользователю и выведет на экран грозное сообщение.

Автозапуск скрипта при загрузке можно настроить привычными графическими средствами. Например, в KDE для этого есть специальный пункт меню в системных настройках.

Сообщение отправляемое после запуска системы


УПРАВЛЕНИЕ КОМПОМ С ПОМОЩЬЮ PUSHBULLET

С помощью консольного клиента Pushbullet приведенный выше скрипт можно дополнить функцией отправки СМС на указанный телефон (сообщение придет с подключенного к Pushbullet смартфона):

$ pb sms ‐d 0 ‐n +12345678901 "Началось!"

Но гораздо интереснее использовать Pushbullet в противоположном направлении, отправляя со смартфона на компьютер пуш‐сообщения c командами на исполнение (например, Y3g5f27g shutdown ‐P):

#!/bin/bash
PASS="Y3g5f27g"
while :
do
  CMD=$(pb list | grep $PASS | cut ‐c 10‐)
 if [ "$CMD" ]; then
pb purge
$CMD fi
sleep 5m done

Префикс в начале сообщения (Y3g5f27g) нужен, чтобы отфильтровать лишние сообщения и обеспечить защиту от несанкционированного доступа. По завершении цикла команда в сообщении будет выполнена, а само сообщение удалено.

Скрипт следует поместить в автозагрузку, предварительно установив и настроив pushbullet‐cli.

Команда отправленная с помощью pushbullet

ОТПРАВКА СКРЫТЫХ КОМАНД С ИСПОЛЬЗОВАНИЕМ GOOGLE CALENDAR

Если использование системы push‐уведомлений для управления компом тебе кажется слишком очевидным, то у меня есть хорошие новости. То же самое можно организовать с помощью календаря Google. Вряд ли разработчики консольного клиента Gcalcli предполагали, что кто‐то станет его использовать таким образом, но мы простых путей не ищем.

Скрипт выглядит так:

#!/bin/bash
while : do
 CMD=$(gcalcli search "Y3g5f27g" '2017‐09‐02T14:00' '2017‐09‐02T15:
00' | cut ‐c 42‐)
 if [ "$CMD" ]; then
  gcalcli delete ‐‐iamaexpert "Y3g5f27g" '2017‐09‐02T14:00'
'2017‐09‐02T15:00'
$CMD fi
sleep 5m done

Чтобы отправить команду, необходимо создать в календаре мероприятие с маркером Y3g5f27g (например, Y3g5f27g shutdown ‐P) в промежутке между 14:00 и 15:00 часами 2 сентября 2017 года. Скрипт выполнит указанную команду и удалит мероприятие.

TWITTER И МОНИТОРИНГ СЕРВЕРА

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

Следующий скрипт отправляет сообщение с данными о состоянии машины, используя консольный клиент твиттера Oysttyer:

#!/bin/bash
HOST=`hostname ‐s`
UP=`uptime | cut ‐d" " ‐f4,5 | cut ‐d"," ‐f1`
LOAD=`uptime | cut ‐d":" ‐f5,6`
MEM=`ps aux | awk '{ sum += $4 }; END { print sum }'`
CPU=`ps aux | awk '{ sum += $3 }; END { print sum }'`
tweet="Host: ${HOST}, uptime ${UP}, cpu: ${CPU}%, memory: ${MEM}%,
loadavg ${LOAD}"
if [ $(echo "${tweet}" | wc ‐c) ‐gt 140 ];
then
echo "ОШИБКА: Длина сообщения превышает 140 знаков!"
exit 1 fi
echo $tweet
echo $tweet | oysttyer ‐script

Его следует повесить на исполнение с определенным интервалом в cron. Вместо Oysttyer можно использовать другой консольный клиент — bti. В этом случае последнюю строку скрипта следует изменить на такую:

echo $tweet | bti ‐‐action update

Вместо заключения:

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

Report Page