Я пытаюсь импортировать CSV-файл с именами хостов и выполнить тест ping для таких ~ 100 устройств.
CSV1:
Hostname
abc
bcd
efg
.
.
and so on
Я хочу выполнить тест ping и написатьping-статус, будь то UP или Down в выходном CSV-файле вместе с соответствующими именами хостов.
Примерно так:
Вывод:
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, и он отображает те же детали ping, которые мы получаем, когда выполняем из 'CMD'.но мой выводной 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])