问题描述
嗨,我想在freebsd上安装duckdns,但是遇到了麻烦。一方面,duckdns具有三个可能适用于我的情况的脚本:linux cron,linux bsd cron和linux netcat cron。作为一个新的Linux用户,我不确定哪一个适用于我,但是我假定netcat版本不适用,因为curl在freebsd上可用。
无论如何,我同时使用linux cron和linux bsd cron的两个脚本都出错了
Linux cron脚本:
echo url="https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2&ip=" | curl -k -o ~/duckdns/duck.log -K -
我在linux cron脚本中遇到的错误是curl状态,未指定url
关于linux bsd脚本:
#!/bin/sh
DOMAINS="example"
TOKEN="feedface-dead-c0ed-babe-c0ffeec0de99"
curl_out=$( echo
url="https://www.duckdns.org/update?domains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2"
| /usr/local/bin/curl --insecure --silent --config - )
if [ == "OK" ]; then
logger -p daemon.info "duckdns update ok"
else
logger -p daemon.err "duckdns update failed"
fi
我得到了错误:
./duck.sh: 7: Syntax error: "|" unexpected
./duck.sh: 5: Syntax error: Error in command substitution
那么我该如何用freebsd设置duckdns,我要使用两个脚本中的哪一个以及如何对其进行修复以使它们起作用?
解决方法
我已经在Shell上的FreeBSD上尝试了这些脚本,并且Linux cron脚本可以正确运行,并将“ KO”写入〜/ duckdns / duck.log。请注意,~
在crontab中可能无法使用,请改用完整路径来记录文件。
该脚本有些混乱。修复它。
#!/bin/sh
DOMAINS="example"
TOKEN="feedface-dead-c0ed-babe-c0ffeec0de99"
curl_out=$(echo url="https://www.duckdns.org/updatedomains=exampledomain&token=a7c4d0ad-114e-40ef-ba1d-d217904a50f2" |
/usr/local/bin/curl --insecure --silent --config - )
if [ "$curl_out" == "OK" ]
then
logger -p daemon.info "duckdns update ok"
else
logger -p daemon.err "duckdns update failed"
fi
还运行并将duckdns update failed
写入系统日志。