You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python脚本中执行ipset add添加IP至已有ipset列表

在Python中向ipset列表添加IP段的实现方法

由于netaddr模块的IPSet仅为Python内部数据结构,无法与系统的ipset工具交互,你可以通过以下两种方式实现向已创建的mylist列表添加IP段的操作:

方法一:直接调用系统ipset命令(推荐)

使用Python的subprocess模块直接执行手动操作时的命令,这是最直接且无需额外依赖的方式:

import subprocess

def add_ip_to_set(set_name, cidr_block):
    try:
        # 执行ipset添加命令,check=True会在命令执行失败时抛出异常
        subprocess.run(
            ['ipset', 'add', set_name, cidr_block],
            check=True,
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE,
            text=True
        )
        print(f"✅ {cidr_block} 已成功添加到 {set_name}")
    except subprocess.CalledProcessError as err:
        print(f"❌ 添加失败: {err.stderr.strip()}")

# 调用示例
add_ip_to_set('mylist', '45.254.246.0/24')

注意事项:

  • 脚本必须以root权限运行(sudo python3 your_script.py),否则会因权限不足执行失败
  • check=True参数确保命令执行出错时主动抛出异常,便于你捕获并处理错误
  • 重定向stdout和stderr是为了避免命令输出干扰脚本的正常打印,可根据需求调整

方法二:使用第三方python-ipset库

如果不想直接调用系统命令,可以使用封装了ipset操作的第三方库:

  1. 先安装库:
pip install python-ipset
  1. 编写代码:
from ipset import IPSet

def add_to_ipset(set_name, cidr_block):
    try:
        ipset = IPSet()
        ipset.add(set_name, cidr_block)
        print(f"✅ {cidr_block} 已成功添加到 {set_name}")
    except Exception as err:
        print(f"❌ 添加失败: {str(err)}")

# 调用示例
add_to_ipset('mylist', '45.254.246.0/24')

注意事项:

  • 同样需要root权限运行脚本
  • 该库底层仍调用系统ipset命令,但提供了更贴合Python风格的API

内容的提问来源于stack exchange,提问作者Martin Vegter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:51:56