我有python脚本,为我的无线和有线接口设置IP4地址.到目前为止,我使用的subprocess
命令如下:
subprocess.call(["ip addr add local 192.168.1.2/24 broadcast 192.168.1.255 dev wlan0"])
如何使用python库设置接口的IP4地址?如果有任何方法可以使用python库获取已有的IP配置?
使用pyroute2 .IPRoute:
from pyroute2 import IPRoute ip = IPRoute() index = ip.link_lookup(ifname='em1')[0] ip.addr('add', index, address='192.168.0.1', mask=24) ip.close()
使用pyroute2 .IPDB:
from pyroute2 import IPDB ip = IPDB() with ip.interfaces.em1 as em1: em1.add_ip('192.168.0.1/24') ip.release()
通过旧ioctl
界面设置地址:
import socket, struct, fcntl SIOCSIFADDR = 0x8916 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) def setIpAddr(iface, ip): bin_ip = socket.inet_aton(ip) ifreq = struct.pack('16sH2s4s8s', iface, socket.AF_INET, '\x00' * 2, bin_ip, '\x00' * 8) fcntl.ioctl(sock, SIOCSIFADDR, ifreq) setIpAddr('em1', '192.168.0.1')
(设置网络掩码完成SIOCSIFNETMASK = 0x891C
)
可以使用相同的方式检索IP地址:使用Python的stdlib查找本地IP地址
我相信如果你想使用它,有一个Netlink的python实现 ioctl