Mi tarea general es hacer ping a cada servidor EC2 al que estoy 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"
Produce la salida correcta, pero no llama a 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 escrita de cada paso es:
- Ejecute netstat con el indicador
-W
para obtener FQDN completos y no nombres de host cortos -
grep
para ec2 -
cut
la salida para obtener solo la columna de nombre de host -
sort
nombres de host únicos -
cut
el nombre de host otra vez para eliminar el número de puerto del final, por ejemplo.ec2-1-2-3.amazon.com.80
- > %código% -
ec2-1-2-3.amazon.com
la salida axargs
cada host diez veces
Creo que estoy teniendo un problema con la variante OS X de ping
porque canalizar la misma salida a xargs
muestra 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 enfocando en el aspecto de xargs aquí. Esa es la única parte de esta tarea que aparentemente no funciona.