在 Python 中 Ping 一个 IP 地址的 CSV 文件

Posted

技术标签:

【中文标题】在 Python 中 Ping 一个 IP 地址的 CSV 文件【英文标题】:Ping a CSV file of IP Adresses in Python 【发布时间】:2020-02-13 19:11:31 【问题描述】:

初学者有一个初学者问题:我正在尝试构建一个 python 程序来 ping 一个 ip 地址的 csv 文件。

这个脚本几乎就在那里,但是当我将 csv 数据转换为列表并使用 for 循环时 在它上面......括号和引号保留在IP地址['10.10.10.1']中,这阻止了我ping。

我知道有很多方法可以从列表项中删除引号/方括号,但这里哪种方法最有效?

我想我快到了,有什么简单的解决方案?

import os
import csv

csvFile = open('hosts.csv')
csvReader = csv.reader(csvFile)
csvData = list(csvReader)

for ip in csvData:
    response = os.system('ping ' + str(ip))
    if response == 0:
        print(ip, 'is up')
    else:
        print(ip, 'is down')

【问题讨论】:

【参考方案1】:

您实际上是在使用 csvData = list(csvReader) 行将列表嵌入到列表中。

csv.reader() 为从 csv 文件中读取的每一行返回一个字符串列表。因此,如果您的文件中有多行,您最终会得到 n 行列表。

如果您的文件有多行,第一个 for 循环将处理。第二个for 循环将解析csv.reader() 返回的列表。

此外,您的 ping 语句将继续 ping。您可能会遇到其他意想不到的问题,但这是另一个问题。

试试这个:

import os
import csv

with open('hosts.csv') as csvfile:
  reader = csv.reader(csvfile)
  for line in reader:
    for ip in line:
      response = os.system('ping -c 1 ' + str(ip))
      if response == 0:
        print (ip, ' is up')
      else:
        print (ip, ' is down')

参考文献

Python3 CSVPinging Servers in Python

【讨论】:

感谢肯的回复,非常感谢!

以上是关于在 Python 中 Ping 一个 IP 地址的 CSV 文件的主要内容,如果未能解决你的问题,请参考以下文章

python运维----检测主机IP ping不通则发邮件

在同一个网段中的IP地址,为啥相互不能PING通?

如何把ping多个ip地址的结果保存在一个文件里

高手赐教 怎么在linux下ping 一个IP地址

如何ping一个IP地址

ping不通ip地址的原因