这是我的 curl 脚本
#!/bin/bash
PING_STATUS="$(netcat -vz mc.bella.wtf 25565 2>&1)"
curl -H "Content-Type: application/json" -X POST -d '{"embeds": [{"title": "Server Status:","color": 16027903,"description": "'"$PING_STATUS"'"}]}' "$WEBHOOK"
这是我运行 crontab 时得到的结果:
mc@ubuntu:~$ crontab -l
* * * * * /home/mc/server/ping >/tmp/mycommand.log 2>&1
mc@ubuntu:~$ cat /tmp/mycommand.log
curl: (3) <url> malformed
为什么我的 url 格式不正确,而脚本本身运行起来却很正常?
答案1
原因是您的环境变量WEBHOOK
无法被识别。
解决方案 1
在您的/etc/environment
添加中:
WEBHOOK="http://example.org"
在你的 crontab 中:
*/1 * * * * source /etc/environment; /home/mc/server/ping >/tmp/mycommand.log 2>&1
解决方案 2
WEBHOOK
在 curl 脚本中指定:
#!/bin/bash
WEBHOOK="http://example.org"
PING_STATUS="$(netcat -vz mc.bella.wtf 25565 2>&1)"
...
解决方案 3
curl 脚本:
#!/bin/bash
source $HOME/.profile
PING_STATUS="$(netcat -vz mc.bella.wtf 25565 2>&1)"
...
$HOME/.profile
WEBHOOK="http://example.org"