Отправить мой .php вывод команде curl, которая сообщает мне по телеграмме с помощью бота - PullRequest
0 голосов
/ 12 января 2019

У меня следующий крон выполняется каждые несколько минут:

*/8 * * * * /usr/local/bin/php -f /home/xxx/yyyy.php >> /home/xxx/zzzz.log

В настоящее время его вывод хранится в файле .log. Но я хочу иметь возможность отправлять вывод мне в виде сообщений через бот-телеграмму.

Я уже создал бот и у меня есть ключи API, но я не уверен, как их подключить.

В телеграмме api docs написано, что я могу использовать curl, чтобы бот отправил мне сообщение, выполнив в файле bash следующее:

#!/bin/bash

CHATID="1234"
KEY="abcd"
TIME="10"
URL="https://api.telegram.org/bot$KEY/sendMessage"
TEXT="Hello world"

curl -s --max-time $TIME -d "chat_id=$CHATID&disable_web_page_preview=1&text=$TEXT" $URL >/dev/null

добавление curl после >>, очевидно, не работает. Как это будет сделано?

Ответы [ 2 ]

0 голосов
/ 12 января 2019

Назначить вывод сценария PHP переменной оболочки TEXT

CHATID="1234"
KEY="abcd"
TIME="10"
URL="https://api.telegram.org/bot$KEY/sendMessage"
TEXT=$(usr/local/bin/php -f /home/xxx/yyyy.php)
# URL-encode some special characters
TEXT=${TEXT//%/%25}
TEXT=${TEXT//&/%26}
TEXT=${TEXT//=/%3D}
TEXT=${TEXT// /%20}
curl -s --max-time $TIME -d "chat_id=$CHATID&disable_web_page_preview=1&text=$TEXT" "$URL" >/dev/null

Поместите вышесказанное в скрипт оболочки и запустите его из cron вместо прямого запуска скрипта PHP.

Если вы также хотите, чтобы оно было отправлено в файл журнала, вы можете использовать команду tee:

TEXT=$(usr/local/bin/php -f /home/xxx/yyyy.php | tee -a /home/xxx/zzzz.log)
0 голосов
/ 12 января 2019

Вы можете перенаправить вывод cron в скрипт или команду с помощью канала (|) Вот пример:

*/8 * * * * /usr/local/bin/php -f /home/xxx/yyyy.php | tee /home/xxx/zzzz.log | /home/xxx/telegram.sh

Это запишет вывод вашей команды в /home/xxx/zzzz.log и отправит его в stdin скрипта.

...