grazie per la segnalazione
l'avevo già visto ma penso che la integrerò in futuro
la mia meta è quella di poter verificare, per più giorni consecutivi, un ampio numero di server e poter avere dei dati semi-attendibili per capire se le connessioni vanno ko, rallentano e in che modo (sicuramente potrebbero verificarsi dei rallentamenti per i flussi interni della rete in esame, ma penso siano trascurabili)
ammetto di essere completamente ignorante in programmazione 'seria' e di aver buttato giù codice scopiazzando a destra e a manca...
a questo punto, a parte una eventuale gestione degli errori, come potrebbe migliorare il codice?
......ho trovato enormi problemi a barcamenarmi tra codice valido in python 2 e python 3... sono l'unico? questo lo sto testando in 3 su windows.
PS non devo vendere nulla... è diventato più uno sfizio mio... ma visto che in rete non ho trovato nulla di simile mi sto chiedendo: ma è una stupidaggine o potrebbe veramente funzionare?
grazie!!!!!!!!!!!
#!/usr/bin/python3
import subprocess as sp
import datetime
import datetime as dt
import time
import os
import urllib.request
# carica il file config.cfg che contiene il percorso per la cartella dei file di log e dei parametri
with open('config.cfg') as configfolder:
for line in configfolder:
fold = line.strip()
configfolder.close()
os.system('cls')
# carica il file ore.txt che contiene il numero di ore per cui ripetere il test
with open(fold + 'ore.txt') as pas:
for line in pas:
y = int(line.strip())
pas.close()
# carica il file pausa.txt che contiene la pausa in secondi tra LA FINE di ciclo e il seguente
with open(fold+'pausa.txt') as pausa:
for line in pausa:
z = int(line.strip())
pausa.close()
# calcola il numero di cicli da effettuare dividendo le ore per la pausa in secondi
y = int((y*60*60)/z)
for x in range(0, y):
risultatoping =0 # risultato ping dei server
risultatopingr = 0 # risultato ping router
totaleping = 0 # numero totale dei server pingati
tempi = ""
print("-------------- PING test -------------- " +str(x) + " --- " + str(y))
# carica il file iprouter.txt contenente l'ip del router che gestisce la rete
# in questo modo verifico se il router è raggiungibile o no
with open(fold + 'iprouter.txt') as r:
for line in r:
ri = line.strip()
status,result = sp.getstatusoutput("ping -c1 -w2 " + ri)
if status == 0:
print("System " + ri + " is UP !")
risultatopingr += 1
else:
print("System " + ip + " is DOWN !")
r.close()
# carica il file serverping.txt per verificare se N server es: DNS operatore , DNS google, DNS opendns, ecc
with open(fold + 'serverping.txt') as g:
for line in g:
ip = line.strip()
status,result = sp.getstatusoutput("ping -c1 -w2 " + ip)
if status == 0:
print("System " + ip + " is UP !")
risultatoping += 1
totaleping +=1
else:
print("System " + ip + " is DOWN !")
totaleping +=1
time.sleep(5)
os.system('cls')
print("-------------- OPEN URL test -------------- " + str(x) + " --- "+ str(y))
# carica il file server.txt per effettuare prove di download e calcolo tempo approssimativo in millisecondi
with open(fold + 'server.txt') as f:
for line in f:
ip = line.strip()
apriurl = 'http://'+ip
print (apriurl)
try:
search_response = urllib.request.urlopen(apriurl)
except urllib.error.HTTPError:
print("KO")
tempo = 0
pass
else:
print("ok")
start = dt.datetime.utcnow()
with urllib.request.urlopen(apriurl) as response:
html = response.read()
stop = dt.datetime.utcnow()
tempo = (stop - start)
tempo = tempo.total_seconds()
tempo = int(tempo * 1000000)
print(tempo)
tempo = str(tempo)
# crea stringa per file csv contenente i tempi di download dai server
tempi = tempi + tempo +";"
time.sleep(5)
now = datetime.datetime.now()
data = now.strftime("%Y/%m/%d")
datafile= now.strftime("%Y_%m_%d")
nomefile = fold + datafile + "_log.csv" # crea il nome per il file di log giornaliero
ora = now.strftime("%H:%M")
# crea il file di log giornaliero
# data; ora; risultato ping router; numero ping server con successo; totale server provati; tempi di download in millionesimi di secondo;
file = open(nomefile,"a")
file.write(data + ";" + ora + ";" + str(risultatopingr) + ";" +str(risultatoping) + ";" + str(totaleping) + ";" + tempi +"n")
file.close()
# visualizza un indicatore di avanzamento in secondi durante la pausa tra un ciclo x di y e l'altro
for t in range (0,int(z/1)):
print(str(x) + " * - * " + str(t) + "/" + str(z) + " * - * " + str(y))
time.sleep(1)
os.system('cls')
print("TEST TERMINATO")
struttura file serverping.txt
www.google.it
www.ducati.com
www.ebay.com
www.libero.it
www.punto-informatico.it
8.8.8.8
8.8.4.4
208.67.222.222
208.67.220.220
193.204.114.232
struttura file server.txt
www.google.it
www.ducati.com
www.ebay.com
www.libero.it
www.500px.com
www.cri.it
www.zeusnews.it
www.ilsoftware.it
www.camcom.gov.it
www.rai.it
www.mediaset.it
www.garr.it
www.tim.it