Mer*_*ero 8 python linux subprocess python-2.7 ubuntu-12.04
我有python脚本,为我的无线和有线接口设置IP4地址.到目前为止,我使用的subprocess命令如下:
subprocess.call(["ip addr add local 192.168.1.2/24 broadcast 192.168.1.255 dev wlan0"])
Run Code Online (Sandbox Code Playgroud)
如何使用python库设置接口的IP4地址?如果有任何方法可以使用python库获取已有的IP配置?
svi*_*ota 11
使用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()
Run Code Online (Sandbox Code Playgroud)
使用pyroute2 .IPDB:
from pyroute2 import IPDB
ip = IPDB()
with ip.interfaces.em1 as em1:
em1.add_ip('192.168.0.1/24')
ip.release()
Run Code Online (Sandbox Code Playgroud)
通过旧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')
Run Code Online (Sandbox Code Playgroud)
(设置网络掩码完成SIOCSIFNETMASK = 0x891C)
可以使用相同的方式检索IP地址:使用Python的stdlib查找本地IP地址
我相信如果你想使用它,有一个Netlink的python实现 ioctl
| 归档时间: |
|
| 查看次数: |
15116 次 |
| 最近记录: |