2

このスクリプトを 15 分ごとに実行して、duckdns.org でセットアップした 4 つの動的ホストの 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

シェルからスクリプトを実行すると、毎回 IP 値を受け取ります。cron 経由でスクリプトを実行すると、スクリプトは散発的に null 値を返します。

この問題は、ホスト (dig ではなく) を実行しているときに気付いた 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 アドレスは正しく、スクリプトはそれを返します。問題なのは、一貫性がない場合があることです。スクリプトは、シェルから実行されるたびに値を抽出し、ほとんどの場合、cron を介して実行されます。

DuckDNS.org でサブドメインを設定した後、賢明な選択ではなかった可能性があることを読みました。おそらく、DuckDNS サービスの問題でしょうか? もしそうなら、他の動的 DNS プロバイダーの推奨事項はありますか?

二重スリット実験の bash バージョンを生きているような気がします。このヌル IP 動作の原因について何か考えはありますか?

4

0 に答える 0