2012-05-17 41 views
0

我有一個安裝了Ubuntu 11.10的盒子。並且該框被配置爲從dhcp獲取IP和主機名。Ubuntu 11.10未調用dhclient-enter-hook.d腳本

我們在/etc/dhcp/dhclient-enter-hooks.d/文件夾中設置了腳本。但是這些腳本沒有被調用/執行。我在另一個盒子裏有類似的腳本,它安裝了Ubuntu 10.04,並且鉤子腳本執行時沒有問題。一個不同之處在於在11.10盒中安裝了NetworkManager。

# ps -ef | grep dhclient 
root  746 695 0 03:52 ?  00:00:00 /sbin/dhclient -d -4 -sf /usr/lib/NetworkManager/nm-dhcp-client.action -pf /var/run/dhclient-eth0.pid -lf /var/lib/dhcp/dhclient-559273da-a027-458e-b124-bdbb4976ee17-eth0.lease -cf /var/run/nm-dhclient-eth0.conf eth0 

我是如何測試/etc/dhcp/dhclient-enter-hooks.d中的腳本未運行的? 我已經在/etc/dhcp/dhclient-enter-hooks.d中放置了一個簡單的腳本「mytest」,它具有以下代碼。文件/tmp/enter-hook.out從未生成過。

#!/bin/sh 
echo "this is test file to test dhclient-enter-hook" > /tmp/enter-hook.out 

剪斷的我的/ etc /網絡/接口

# cat /etc/network/interfaces 
auto lo 
iface lo inet loopback 

auto eth0 inet dhcp 
+0

沒有真正的編程相關。你可能在http://askubuntu.com/上運氣更好。 – paxdiablo

回答

3

也許是太晚了,你已經解決了通過其他途徑的問題;但無論如何,因爲我受到同樣的問題,我以爲我會鐘意。

您的問題是NetworkManager。這就是執行dhclient,使用不同的配置文件,而不是執行任何鉤子。這是申請作爲一個bug在Ubuntu:

https://bugs.launchpad.net/ubuntu/+source/network-manager/+bug/293139 

你可以把腳本/etc/NetworkManager/dispatcher.d要執行NetworkManager時帶來了一個接口。在上面的bug中有一個導出到這些腳本的變量列表。如果你不需要它們中的任何一個,並且只想在界面啓動時執行某些操作,那麼你應該有足夠的權利。

希望它有幫助。

0

我在幾分鐘前遇到了同樣的問題,並選擇沿着dispatcher.d腳本路徑前進。所以,我寫了下面的腳本,並把它放在 /etc/NetworkManager/dispatcher.d/99resolv.conf.dhclient

#!/bin/sh -e 
# Script to dispatch NetworkManager events 
# It overwrites /etc/resolv.conf with the DNS of preference 
# See NetworkManager(8) for further documentation of the dispatcher events. 

sleep 3 
rm -f /etc/resolv.conf && echo nameserver 127.0.0.1 > /etc/resolv.conf 
service dnsmasq reload 

的想法是,無論發生什麼事情,把所有DNS請求到本地主機,其中的dnsmasq是等待回答。現在需要的只是tel dnsmasq在哪裏可以找到真正的resolv.conf文件,因此它會知道向不知道主機名的DNS請求發送到哪裏。創建/etc/dnsmasq.d一個文件,說/etc/dnsmasq.d/upstream.conf並把它此行

resolv-file=/var/run/NetworkManager/resolv.conf 

/var/run/NetworkManager/resolv.conf就是網絡管理器存儲DNS它通過DHCP接收信息。現在,每當您從DHCP服務器獲取一些DNS信息時,您的dnsmasq服務器就會知道它們並相應地轉發請求。

而且,你完成了。如果dnsmasq永遠失敗,你唯一的擔心就是你。