Mi tarea es hacer ping a cada EC2 servidor que esté conectado.
Estoy usando este comando para hacer eso:
netstat -W | grep ec2 | cut -d " " -f 18 | sort -u | cut -d "." -f 1,2,3,4 | xargs -0 -p "ping -c 10"
Se emite el derecho de salida, pero no es llamar xargs
por línea:
ping -c 10 ec2-107-20-154-211.compute-1.amazonaws.com
ec2-107-20-169-186.compute-1.amazonaws.com
ec2-13-58-191-91.us-east-2.compute.amazonaws
ec2-18-204-248-223.compute-1.amazonaws.com
ec2-18-207-50-150.compute-1.amazonaws.com
ec2-18-234-32-173.compute-1.amazonaws.com
ec2-34-192-54-86.compute-1.amazonaws.com
ec2-34-195-196-96.compute-1.amazonaws.com
ec2-34-206-216-146.compute-1.amazonaws.com
?...^C
La explicación por escrito de cada paso es:
- Ejecutar netstat con el
-W
bandera para obtener completa de los nombres de dominio y no a corto nombres de host grep
de ec2cut
el resultado para obtener el nombre de host de la columnasort
únicos de nombres de hostcut
el nombre de host de nuevo para colocar el número de puerto desde el final por ejemploec2-1-2-3.amazon.com.80
->ec2-1-2-3.amazon.com
xargs
la salida aping
cada host diez veces
Creo que tengo un problema con el OS X de la variante de xargs
debido a que la tubería de salida igual a wc -l
muestra de ocho líneas:
netstat -W | grep ec2 | cut -d " " -f 18 | sort -u | cut -d "." -f 1,2,3,4 | wc -l
8
Me estoy centrando en el xargs aspecto aquí. Que es la única parte de esta tarea, que no es al parecer de trabajo.