Centos
dhclient 進入/退出掛鉤以更新 resolv.conf
我想將以下行附加到我們 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
,NBI
和TIMEOUT
.腳本的一個簡單修復方法是僅在該行不存在時才添加該行。更好的解決方法是匹配
$reason
適當的案例值。#!/bin/bash grep -q '^options' /etc/resolv.conf || echo 'options timeout:1 attempts:1 rotate' >>/etc/resolv.conf true