首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何用Python对csv列表中的设备进行Ping测试

如何用Python对csv列表中的设备进行Ping测试
EN

Stack Overflow用户
提问于 2018-06-06 04:16:28
回答 2查看 1.9K关注 0票数 1

我正在尝试导入一个具有主机名的csv文件,并对这样的~100个设备进行ping测试。

CSV1:

Hostname  
abc  
bcd  
efg  
.  
.  
and so on

我想要执行ping测试,并在输出csv文件中写入ping状态,无论是UP还是Down,以及相应的主机名。

如下所示:

输出:

Hostname  Ping Status  
abc  UP  
bcd  DOWN  
efg  DOWN  
.  .  
.  .  
and so on

我已经尽力在互联网上查找了一下,但是没有找到任何机会。我是python的新手,还处于学习阶段。请帮帮我!!

import os
import csv

with open('CSV1.csv', 'r') as f:
    reader = csv.DictReader(f)
    rows = list(reader)

hosts = [row['CI_Name'] for row in rows]
statuses = [row['Status'] for row in rows]

for row in rows:
    #ping hosts
    hostname = row['CI_Name']
    response = os.system("ping -n 1 " + hostname)
    print ("[DEBUG]", response)
    if response == 0:
        print (hostname, 'is up')
        row['Status'] = 'Up'
    else:
        print (hostname, 'is down')
        row['Status'] = 'Down'

#write results
with open("Output Final.csv", "w") as w:
    writer = csv.writer(w)

我在Python控制台中获得了输出,它显示了与我们从'CMD‘中获得的相同的ping详细信息。但是我的输出csv文件不会被修改。

这是已完成的代码版本;尽管我仍在努力打印这些设备的ip地址,并在将其写入csv文件时获得正确的报头。

import socket
import os
import csv
name = {}
CI = {}
hostname = {}
status = {}
with open('Output1.csv', 'r', newline='') as csvinput:
    reader = csv.DictReader(csvinput)

    for rows in reader:
        CI = rows['CI_Name']
        name = socket.getfqdn(CI)
        data = name
        hostname = rows['CI_Name']
        response = os.system('ping -n 2 ' + hostname)
        if response == 0:
            status = 'Up'
        else:
            status = 'Down'
        with open('Output Final.csv', 'a', newline='') as csvoutput:
            output = csv.writer(csvoutput)
            output.writerow([hostname] + [data] + [status])
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50708269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档