Пингуйте CSV-файл IP-адресов в Python - PullRequest
0 голосов
/ 17 октября 2019

Начинающий с вопроса новичка: я пытаюсь собрать программу на python для проверки связи с файлом CSV с IP-адресами.

Этот сценарий почти готов, однако, когда я преобразую данные CSV в список и используюцикл for на нем ... скобки и кавычки остаются в IP-адресе ['10 .10.10.1 '], что не позволяет мне пинговать.

Я знаю, что существует множество способов удаления кавычек / скобок из элементов списка, но что лучше всего подойдет здесь?

Я думаю, что я почти на месте, что это простое решение для этого?

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 Ответ

0 голосов
/ 17 октября 2019

Вы фактически встраиваете список в список со строкой csvData = list(csvReader).

csv.reader() возвращает список строк для каждой строки, считанной из файла CSV. Поэтому, если в вашем файле несколько строк, вы получите n-рядные списки.

Первый цикл for будет обрабатываться, если в вашем файле несколько строк. Второй цикл for будет анализировать список, возвращаемый csv.reader().

Кроме того, ваш оператор 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 CSV
Pinging серверов в Python

...