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

读取含IP与主机名的TXT文件执行Python Ping脚本失败问题

问题原因及解决办法

你代码里的 ip = i[-15:] 是硬截取每行最后15个字符,当每行添加主机名后,这个截取结果要么包含主机名,要么直接就是主机名,根本不是正确的IP地址,自然会导致Ping失败。

正确的处理逻辑是:针对「IP 主机名」的行格式,把每行按空格拆分后取第一个字段作为IP。

修正后的代码示例:

import os
import subprocess

def iplist():
    # 用with语句自动管理文件,避免资源泄漏
    with open("iplist.txt", "r") as pingList:
        for line in pingList:
            # 先去除换行符,跳过空行
            cleaned_line = line.strip("\n")
            if not cleaned_line:
                continue
            # 按空格拆分,取第一个元素作为IP
            ip = cleaned_line.split()[0]
            with open(os.devnull, 'w') as DEVNULL:
                try:
                    subprocess.check_call(
                        ['ping', '-w', '1', ip],
                        stdout=DEVNULL, 
                        stderr=DEVNULL
                    )
                    print(f"{ip} 连通正常")
                except subprocess.CalledProcessError:
                    print(f"{ip} 连通失败")

额外优化说明:

  • 用with语句打开iplist.txt,无需手动关闭文件,更安全
  • 增加空行判断,避免处理空行时触发报错
  • 捕获CalledProcessError,可以直观输出每台主机的Ping状态

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 03:25:28