0
目前,我正在使用「subprocess」命令和「dhclient」,這樣我就可以從服務器發出DHCP請求。我正在嘗試改進,並使用純粹的Python庫來提出DHCP客戶端請求。任何一個知道一個圖書館都可以做到的?DHCP請求庫
目前,我正在使用「subprocess」命令和「dhclient」,這樣我就可以從服務器發出DHCP請求。我正在嘗試改進,並使用純粹的Python庫來提出DHCP客戶端請求。任何一個知道一個圖書館都可以做到的?DHCP請求庫
退房pydhcplib,請參閱http://pydhcplib.tuxfamily.org/pmwiki/index.php?n=Site.ClientExample
編輯使用例子:給它一個嘗試在我的Ubuntu 12.04
安裝:
$ cd pydhcplib-0.6.2/
$ sudo python setup.py install
test.py:
#!/usr/bin/python
from pydhcplib.dhcp_packet import *
from pydhcplib.dhcp_network import *
netopt = {'client_listen_port':68,
'server_listen_port':67,
'listen_address':"0.0.0.0"}
class Client(DhcpClient):
def __init__(self, options):
DhcpClient.__init__(self,options["listen_address"],
options["client_listen_port"],
options["server_listen_port"])
def HandleDhcpOffer(self, packet):
print packet.str()
def HandleDhcpAck(self, packet):
print packet.str()
def HandleDhcpNack(self, packet):
print packet.str()
client = Client(netopt)
# Use BindToAddress if you want to emit/listen to an internet address (like 192.168.1.1)
# or BindToDevice if you want to emit/listen to a network device (like eth0)
client.BindToAddress()
while True :
print client.GetNextDhcpPacket()
運行它:
$ sudo python x.py
# Header fields
op : BOOTREPLY
htype : 1
hlen : 6
hops : 0
xid : 2381790907
secs : 0
flags : 0
ciaddr : 0.0.0.0
yiaddr : 192.168.125.88
siaddr : 0.0.0.0
giaddr : 0.0.0.0
chaddr : 60:fa:cd:bb:25:a5
sname :
file :
# Options fields
server_identifier : 3232267521
subnet_mask : 255.255.255.0
domain_name_server : 66.234.224.2 - 8.8.8.8 -
router : 192.168.125.1 -
dhcp_message_type : DHCP_ACK
ip_address_lease_time : 86400
# Header fields
op : BOOTREPLY
htype : 1
hlen : 6
hops : 0
xid : 3920377619
secs : 0
flags : 32768
ciaddr : 192.168.125.138
yiaddr : 192.168.125.138
siaddr : 0.0.0.0
giaddr : 0.0.0.0
chaddr : 68:5d:43:8c:3e:94
sname :
file :
# Options fields
server_identifier : 3232267521
subnet_mask : 255.255.255.0
domain_name_server : 66.234.224.2 - 8.8.8.8 -
router : 192.168.125.1 -
dhcp_message_type : DHCP_ACK
ip_address_lease_time : 86400
感謝您的回覆。首先,對不起,因爲我是新來的python和新的'stockoverflow',所以我可能不會很好地解釋我的問題。現在的問題是我的無線適配器'wlan0'已經與使用'wpa_supplicant'的無線網絡相關聯。但是,它需要DHCP請求才能獲得IP地址。我嘗試了你建議的例子,我把'client.BindToAddress()'改爲'BindToDevice()',所以它應該聽我的'wlan0'。但它一直在聆聽而沒有做任何事情。我想我在這裏錯過了一些東西。 – Mero
相應地更新了答案,請注意我已經爲原始示例添加了一個打印 –