Centos

dhclient 進入/退出掛鉤以更新 resolv.conf

  • January 20, 2016

我想將以下行附加到我們 aws 環境中所有伺服器的 resolv.conf 並確保它不會被覆蓋

options timeout:1 attempts:1 rotate

我遇到了 dhclient 進入和退出鉤子,這似乎是實現這一目標的方法。

我嘗試使用名稱 /etc/dhcp/dhclient-enter-hooks 放置輸入鉤子,內容如下

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

當我執行 dhclient 時,它會多次將同一行添加到文件的開頭。有時,開始幾次,最後幾次。退出鉤子做同樣的事情。

為什麼該行被多次添加到 resolv.conf,而不是只添加一次?而且這種行為是隨機的。有時它在執行 dhclient 時會添加 4 次相同的行。有時3等等。這樣做的正確方法是什麼?

(8)的手冊頁仔細定義了dhclient-script該行為。將為每個可能的操作呼叫腳本:

操作dhclient需要呼叫客戶端配置腳本時,它會在環境中定義一組變數,然後呼叫CLIENTBINDIR/dhclient-script. 在所有情況下,$reason都設置為呼叫腳本的原因的名稱。目前定義了以下原因: MEDIUM, PREINIT, BOUND, RENEW, REBIND, REBOOT, EXPIRE, FAIL, STOP, RELEASE,NBITIMEOUT.

腳本的一個簡單修復方法是僅在該行不存在時才添加該行。更好的解決方法是匹配$reason適當的案例值。

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

引用自:https://unix.stackexchange.com/questions/256501