Отправка текста и файла с сервера себе в Telegram с помощью curl


Отправка файла с сервера себе в Telegram


Я использую Telegram по назначению. Но иногда, опираясь на крутые возможности его Bot API, невозможно обойти стороной облегчения своей жизни. Как-то уже в блоге я писал пост про скрипты резервного копирования в Telegram, которые у нас крутятся на небольших проектах и уже несколько раз конкретно спасали наши жизни и жизни наших проектов.

Мне очень часто приходится выдергивать какие-нибудь файлы с серверов (своих и клиентских) и передавать дальше через телеграм. Например дампы тестовых БД, docker-compose файлы и многое другое. Долгое время я качал файлы через winscp и перекладывал в телеграм кому надо. Но когда файл большой это неудобно — пока скачаешь, пока закинешь.

Небольшая история

С клиентом покупали https сертификат ему на проект и надо было передавать с сервера csr файл, для последующей его обработки. Сервер находится за vpn, ходить напрямую через WinSCP было неудобно и лень. И я решил попробовать отправить файл через телеграм сам себе. Сработало:)

Также, пару месяцев назад я таким образом передавал дамп тестовой базы данных новому разработчику и понял что способ реально рабочий и начал пользоваться им регулярно. Я даже сначала начал писать бинарник на Go, но на полпути понял, что вопрос решается простым BASH скриптом на 5 строк с использованием curl. Сам скрипт можно увидеть ниже.

#getChatId
# написать что-либо в бот чат, потом запустить:
curl https://api.telegram.org/bot$TOKEN/getUpdates | grep -Po '"from":{"id":.+?,' | grep -Eo "[0-9]+"
# https://gist.github.com/SanariSan/4c7cca1aef10dfe0e27e55cfd97e9a53

Send text messages

curl -X POST -H "Content-Type:multipart/form-data" -F chat_id=$CHAT_ID -F text="hello world!!!" "https://api.telegram.org/bot$TOKEN/sendMessage"

 

Сам скрипт

#!/bin/sh
 
chatId=<YOUR_CHAT_ID>
botToken=<YOUR_BOT_TOKEN>
curdir=$PWD
echo sending $curdir/$1
 
curl -F chat_id=$chatId -F document=@$curdir/$1 https://api.telegram.org/bot$botToken/sendDocument
# more about gist on my site — amorev.ru/telegram-terminal-file-send
view raw bash hosted with ❤ by GitHub

Для его работы вам необходимо указать свой Bot Token и Chat Id, куда отправлять сам файл. На этом все:)

Дальше, для удобства, можно сделать alias

alias tgsender="/home/zvinger/tgsender.sh"

И отправлять файлы можно простой командой

tgsender filename.json

И файл окажется у вас в личке от вашего бота!

 

Добавить комментарий

Обратная связь

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

пишите мне на netdm@mail.ru