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 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
-W
indicador para obtener FQDN completos y no nombres de host cortos grep
para ec2cut
la salida para obtener solo la columna de nombre de hostsort
nombres de host únicoscut
el nombre de host nuevamente para eliminar el número de puerto desde el final, por ejemplo,ec2-1-2-3.amazon.com.80
->ec2-1-2-3.amazon.com
xargs
la salida aping
cada host diez veces
Creo que me encuentro con un problema con cualquiera de las variantes de OS X xargs
porque la canalización de la misma salida wc -l
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 centrando en el aspecto xargs aquí. Esa es la única parte de esta tarea que aparentemente no funciona.
fuente