2

我每 15 分钟运行一次这个脚本来记录我在duckdns.org 上设置的四个动态主机的IP。

DUCKDNS=( "sub1.duckdns.org"
        "sub2.duckdns.org"
        "sub3.duckdns.org"
        "sub4.duckdns.org" )

function resolveIP () {
    CURRENT_IP=$(dig +short $1)
    echo $CURRENT_IP
}

for HOST in "${DUCKDNS[@]}"
do
    IP=$(resolveIP $HOST)
    echo -e "$HOST ... $IP"
done

当我从 shell 运行脚本时,我每次都会收到一个 IP 值。当我通过 cron 运行脚本时,脚本偶尔会返回空值。

我相信这个问题与我在运行主机(不是挖掘)时注意到的 2(SERVFAIL) 错误有关。这是主机的回复:

host sub1.duckdns.org
sub1.duckdns.org has address 66.66.66.66 (NOTE: This value is correct)
Host sub1.duckdns.org not found: 2(SERVFAIL)
sub1.duckdns.org mail is handled by 50 sub1.duckdns.org.

虽然返回了错误,但 IP 地址是正确的并且脚本会返回它。令人不安的是有时它并不一致。该脚本每次从 shell 运行时提取值,并且大多数时候通过 cron 运行。

在使用 DuckDNS.org 设置我的子域后,我了解到这可能不是一个明智的选择。也许这只是 DuckDNS 服务的问题?如果是这样,对其他动态 DNS 提供商有什么建议吗?

我觉得我生活在双缝实验的 bash 版本中。关于什么可能导致这种空 IP 行为的任何想法?

4

0 回答 0