Всем привет.
Пишу сниффер портов сетевого оборудования.
Суть скрипта: есть файл txt. со списком ip. Скрипт берёт ip из этого файла, проверяет его на доступность утилитой ping, если пингуется, проверяет на открытость портов, если нет, пишет что не пингуется. Вывод в csv.
Пока код такой:
import socket
import time
import telnetlib
import paramiko
import os
r = open(“C:\Python Scripts\snif\IP-ports.csv”, ‘a’)
with open(r“C:\Python Scripts\snif\IP.txt”, “r”) as f:
ipfile = f.read().split('\n')
for ip in ipfile:
time.sleep(5)
host = ip
Ping = os.system(“ping -n 1 ” + host)
if Ping == 0:
for i in (22,23,80,443):
s = socket.socket()
s.settimeout(0.5)
response = s.connect_ex((ip, i))
if response:
r.write(ip + “;”+ str(i) +“;”+ “close” + “\n”)
print (str(ip) + “ ”+ str(i) + “ ”+ “close”)
else:
r.write(ip + “;”+ str(i) +“;”+ “open” + “\n”)
print (str(ip) + “ ”+ str(i) + “ ”+“open”)
else:
r.write(ip + “;” + “;” + “;” + “no ping”+ “\n” )
s.close()
r.close()
Вывод:
Ping statistics for 10.10.10.30:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 9ms, Maximum = 9ms, Average = 9ms
10.10.10.30 22 open
10.10.10.30 23 close
10.10.10.30 80 open
10.10.10.30 443 open
и . д.
Теперь мне необходимо что бы вывод был в таблице в csv. файле по типу:
ip 22 23 80 443 comment
10.10.10.30 open close open open
10.10.10.20 open open close close
10.10.10.40 no ping
Подскажите новичку, как это можно сделать ?