Давай замутим ченить своё, простое и полезное. В этом посте изобретём шаринг файлов/папок с серверов прямо к себе в Telegram. Будем использовать Bash и API Telegram.
Задача
- Нужно создать tar.gz-архив файла/папки на сервере.
- Закинуть этот архив себе в Telegram.
- Почистить за собой.
Для начала сделаем Telegram-бота, идём в @BotFather и получаем токен вида 11223344:HUYPIZDADJIGURGA. Я назову бота bashdayz_bot.
Подробности всей этой кухни описывать не буду, как ботов делать. Но там всё просто, БотБатя тебе подскажет, приключений на 15 секунд, главное — забрать токен. Если не разберёшься, пиши в комментариях, поможем.
Так, токен есть. Теперь нужно узнать ID своего пользователя в Telegram. Опять идём в бота, но в другого — @RawDataBot, запускаем и смотрим поле: "chat": {"id": 1234567890}.
Всё это понадобится, чтобы перекинуть созданные архивы по API в Telegram. Дальше.
Накидываем прототип скрипта shellshare
#!/bin/bash
chat_id=""
bot_token=""
stamp=$(date +%d%m%Y_%H%M%S)
filename=$1-$stamp.tar.gz
tar -czvf $filename "$@"
curl -F chat_id="${chat_id}" -F parse_mode="HTML" -F document=@"$filename" https://api.telegram.org/bot${bot_token}/sendDocument
rm $filename
В переменную chat_id закидываешь ID, который забрал у RawDataBot. А в переменную bot_token пишешь токен, который забрал у БотБати.
Так, всё готово. Теперь нужно запустить своего бота. Идём в телегу и ищем @bashdayz_bot, которого создали в самом начале поста. Запускаем его. Ну вот и всё, проверяем.
./shellshare /var/log/nginx/
shellshare access.log error.log
Создастся tar.gz-архив с названием одноимённой папки/файла и прилетит тебе в бота @bashdayz_bot — но бот у тебя, естественно, будет с другим именем. После отправки архив зачистится с сервера, чтобы место не занимать.
В скрипте используется нативное API Telegram через curl. А символ “$@” означает, что скрипту можно передавать несколько папок/файлов, то есть массив. Но если в этом скрипте передать массив, то имя архива будет с именем первой папки, пусть тебя это не смущает. Если нужно будет, зафиксишь под свои нужды, мы делаем лишь прототип.
По желанию можешь сменить архиватор, впендюрить шифрование имён и установить пароль. Либо вообще через GPG криптануть.
Можно ещё в curl передать caption, тогда в Telegram тебе придёт архив с подписью, чтобы потом можно было ориентироваться, что это такое.
curl ... -F caption="${caption}" ...
В переменную caption передай текст, который нужен для подписи к архиву.
Но для всякой мелочи и конфигов подойдёт, когда нужно быстро дёрнуть с сервака что-то себе и поделиться в корпоративном чатике.
Ну а если кто-то другой запустит твоего бота, то доступ к файлам не получит, потому что все файлы были отправлены на твой айдишник.
Тема с ботами интересная и много где применяется, у меня мониторинг на такое завязан, да и куча ещё всего. Банально отправлять сообщения из GitLab при успехе/факапе отработки пайплайна.
Дорабатывай, изучай. Удачи!








Комментарии
Виджет комментариев загружается с серверов Telegram и может использовать cookies. Разрешите внешние сервисы, чтобы открыть обсуждение.