Bash

使用 crontab 執行時,Curl 不起作用

  • March 20, 2020

這是我的捲曲腳本

#!/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 在單獨執行腳本時工作正常時格式錯誤?

原因是您的環境變數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

捲曲腳本:

#!/bin/bash
source $HOME/.profile
PING_STATUS="$(netcat -vz mc.bella.wtf 25565 2>&1)"
...

$HOME/.profile

WEBHOOK="http://example.org"

引用自:https://serverfault.com/questions/1007731