【问题标题】:Send my .php output to a curl command that messages me on telegram using a bot将我的 .php 输出发送到 curl 命令,该命令使用机器人在电报上向我发送消息
【发布时间】:2019-06-06 21:02:18
【问题描述】:

我每隔几分钟就会执行一次以下 cron:

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

目前它的输出存储在.log 文件中。但我希望能够通过电报机器人将输出作为消息发送给我。

我已经制作了一个机器人并拥有 api 密钥,但我不确定如何连接它们。

在电报 api 文档中,它说我可以使用 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 显然不起作用。这将如何完成?

【问题讨论】:

  • PHP 具有完整的 cURL 支持。让您的/home/xxx/yyyy.php 发送电报通知。
  • 不会捕获任何 PHP 错误。

标签: php bash curl bots telegram


【解决方案1】:

将 PHP 脚本的输出分配给 TEXT shell 变量

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

将上面的代码放在一个 shell 脚本中,然后从 cron 运行它,而不是直接运行 PHP 脚本。

如果您还希望将其发送到日志文件,可以使用tee 命令:

TEXT=$(usr/local/bin/php -f /home/xxx/yyyy.php | tee -a /home/xxx/zzzz.log)

【讨论】:

    【解决方案2】:

    您可以使用管道 (|) 将您的 cron 输出重定向到脚本或命令 这是一个例子:

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

    这会将您的命令输出写入 /home/xxx/zzzz.log 并将其发送到脚本的标准输入。

    【讨论】:

      猜你喜欢
      • 2020-10-05
      • 2016-11-11
      • 2017-09-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-21
      • 2010-09-29
      • 1970-01-01
      • 2017-03-19
      相关资源
      最近更新 更多