resolv.confを更新するためのdhclientエントリ/終了フック

resolv.confを更新するためのdhclientエントリ/終了フック

aws envのすべてのサーバーのresolv.confに次の行を追加して上書きしないようにしたいと思います。

options timeout:1 attempts:1 rotate

私はこれを達成する方法であるように見えるdhclientの起動と終了のフックを見つけました。

次の内容で、/etc/dhcp/dhclient-enter-hooksというEnterフックを配置しようとしました。

 #!/bin/bash
 sed -i '$ a\options timeout:1 attempts:1 rotate' /etc/resolv.conf

dhclient を実行すると、ファイルの先頭に同じ行が複数回追加されます。時には最初に数回、最後に数回。出口フックも同じことを行います。

この行がresolv.confに1回ではなく複数回追加されるのはなぜですか?そしてこの行動はランダムです。時には、dhclientの実行中に同じ行を4回追加します。時には3等です。これを行う正しい方法は何ですか?

答え1

これマニュアルページ(8)dhclient-script行動は慎重に定義される。すべての可能な操作に対してスクリプトが呼び出されます。

仕事 クライアント構成スクリプトを呼び出す必要がある場合は、dhclient環境で一連の変数を定義してから呼び出しますCLIENTBINDIR/dhclient-script。すべての場合において、$reasonこれらのスクリプトはスクリプトを呼び出す理由の名前に設定されます。現在定義されている理由は次の とおりです。MEDIUM、、、、、、、、、、 およびPREINITBOUNDRENEWREBINDREBOOTEXPIREFAILSTOPRELEASENBITIMEOUT

スクリプトに対する簡単な修正は、その行がまだ存在しない場合にのみその行を追加することです。より良い解決策は、$reason適切なケース値を一致させることです。

#!/bin/bash
grep -q '^options' /etc/resolv.conf ||
    echo 'options timeout:1 attempts:1 rotate' >>/etc/resolv.conf
true

関連情報