如何在python中为接口分配IP地址?

 手机用户2602909207 发布于 2023-02-12 14:55

我有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配置?

2 个回答
  • 使用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()
    

    2023-02-12 14:56 回答
  • 通过旧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

    2023-02-12 14:58 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有