Así que escribí un script de shell para hacer ping a un servidor web 86.400 veces y escribir el resultado en un archivo de texto. Ejemplo de un ping a continuación:
64 bytes from a104-100-153-112.deploy.static.akamaitechnologies.com (104.100.153.112): icmp_seq=1 ttl=60 time=12.6 ms
64 bytes from a104-100-153-112.deploy.static.akamaitechnologies.com (104.100.153.112): icmp_seq=2 ttl=60 time=17.2 ms
64 bytes from a104-100-153-112.deploy.static.akamaitechnologies.com (104.100.153.112): icmp_seq=3 ttl=60 time=11.0 ms
Mi primer problema es que luego lo necesito para extraer el valor del tiempo de ida y vuelta (12.6) de la salida del ping sin procesar en un segundo archivo de texto. Creo que lo que tengo ahora ignorará el punto decimal en 12.6 y solo aceptará los valores numéricos. Mi código a continuación:
sed 's/.* time= \ ([0-9]* \ ). * /\1/' pingoutput.txt | sort -n > sortedtime.txt
Después de extraer esos valores de tiempo, sortedtime.txt
leo el archivo de texto y convierto cada línea (es decir, cada tiempo de ida y vuelta) en un elemento de una lista llamada timelist[]
. Luego imprime tanto la longitud como la lista completa para garantizar que la lista incluya los 86400 tiempos de ida y vuelta y que estén ordenados correctamente. Mi código a continuación:
with open("sortedtime.txt", 'r') as time:
timelist = []
for line in time:
timelist.append(line)
time.close()
print timelist[0:86399]
print len(timelist)
Mi segundo y último problema es que necesito trazar un CDF de todos mis valores en esa lista de tiempo y mostrarlo. Soy nuevo en Python y no estoy muy familiarizado con el matplotlib.pyplot
paquete, por lo que no entiendo cómo haría para trazar los elementos de la lista en el eje x versus un eje y de 0 a 1.
Estoy trabajando en Linux, ¡cualquier ayuda es muy apreciada!