Mejor pingmon.py
Hace un tiempo hice un script que uso para monitorear el servicio de mi proveedor de internet. Como últimamente estuvo andando mal, lo cambié un toque para que me muestre la cantidad de paquetes perdidos en los últimos 10, 100 y 1000 (en vez de los porcentajes).
Dejó acá el código fuente:
#!/usr/bin/env python
import subprocess
import sys
import re
SEQ_NUMBER_RE = re.compile(".*icmp_seq=(\d+) ttl.*")
def report(probes, count):
if len(probes) < count:
return "N/A"
return str ( count - sum(probes[-count:]) )
def monitor(ip):
probes = []
ping = subprocess.Popen(["ping", ip], stdout=subprocess.PIPE)
stdout = ping.stdout
stdout.readline() # Ignore first line
line_count = 0
last_seq_number = 0
while True:
line_count +=1
seq_number = int( SEQ_NUMBER_RE.match(stdout.readline()).group(1))
probes.extend([0] * (seq_number - last_seq_number - 1))
probes.append(1)
print "(%s) 10:%s 100:%s 1000:%s" % (
line_count, report(probes, 10), report(probes, 100), report(probes, 1000)
)
probes = probes[-1000:] # Keep memory usage bounded
last_seq_number = seq_number
def main(argv):
monitor(argv[1])
if __name__ == '__main__':
main(sys.argv)
Hasta la próxima,
Aureliano.
No hay comentarios.:
Publicar un comentario