运行Python自动修改IP脚本出现Host name lookup failure错误如何解决?
报错原因排查
触发Host name lookup failure报错的核心是os.system('sudo ifconfig wlo1 ip')这行代码的语法完全错误:
- ifconfig设置IP的标准语法为
ifconfig <网卡名> <实际IP地址> netmask <子网掩码>,你代码里直接把字符串ip写死在了命令里,系统会把ip当成主机名尝试解析,自然会报查找失败的错误 - 除此之外你的代码还有3个逻辑问题:
- 生成的随机IP变量
ip根本没有传入到系统命令中,你打印的IP和实际网卡配置完全无关 - 用户输入的间隔时间
sec、切换次数limit参数完全没有被使用,循环硬编码为执行4次、每次固定等待6秒 - 没有校验IP合法性,随机生成的公网IP、保留段IP可能直接导致网卡断连
- 生成的随机IP变量
修复方案
修改后代码
import random import time import os sec = int(input("输入IP切换间隔(单位:秒):")) limit = int(input("输入IP切换总次数:")) # 可根据实际网络环境修改子网掩码、网卡名 netmask = "255.255.255.0" interface = "wlo1" for _ in range(limit): # 生成私有网段IP,避免非法IP导致断连,可根据需要调整网段 ip = f"192.168.1.{random.randint(2, 254)}" time.sleep(sec) os.system(f"sudo ifconfig {interface} down") # 修正后的设置IP命令,传入真实IP和子网掩码 os.system(f"sudo ifconfig {interface} {ip} netmask {netmask}") os.system(f"sudo ifconfig {interface} up") print(f"当前已将网卡{interface}IP设置为:{ip}")
补充说明
- 如果你的系统已经不预装ifconfig,可将设置IP的命令替换为iproute2版本:
sudo ip addr add {ip}/{netmask} dev {interface} - 该脚本仅能修改网卡内网IP,无法修改运营商分配的公网IP,若需要切换公网IP需配合路由器重拨号操作
- 手动设置IP前请确认你的网络网关、网段规则,避免设置的IP和网络环境冲突导致断连
内容的提问来源于stack exchange,提问作者user16775421
相关产品推荐
相关产品推荐

