Então, escrevi um script shell para executar ping em um servidor web 86.400 vezes e gravar a saída em um arquivo de texto. Exemplo de um ping abaixo:
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
Meu primeiro problema é que preciso extrair o valor do tempo de ida e volta (12,6) da saída bruta do ping para um segundo arquivo de texto. Acredito que o que tenho agora irá ignorar o ponto decimal em 12,6 e considerar apenas os valores numéricos. Meu código abaixo:
sed 's/.* time= \ ([0-9]* \ ). * /\1/' pingoutput.txt | sort -n > sortedtime.txt
Depois de extrair esses valores de tempo, sortedtime.txt
leio o arquivo de texto e transformo cada linha (portanto, cada tempo de ida e volta) em um elemento de uma lista chamada timelist[]
. Em seguida, ele imprime o comprimento e a lista inteira para garantir que a lista incluiu todos os 86.400 tempos de ida e volta e que foram classificados corretamente. Meu código abaixo:
with open("sortedtime.txt", 'r') as time:
timelist = []
for line in time:
timelist.append(line)
time.close()
print timelist[0:86399]
print len(timelist)
Meu segundo e último problema é que preciso traçar um CDF de todos os meus valores nessa lista de timelist e exibi-lo. Sou novo em Python e não estou muito familiarizado com o matplotlib.pyplot
pacote e, portanto, não entendo como plotaria os elementos da lista no eixo x versus um eixo 0 a 1 y.
Estou trabalhando em Linux, qualquer ajuda será muito apreciada!