Il mio compito generale è di eseguire il ping di ogni server EC2 a cui mi trovo in contatto.
Sto usando questo comando per farlo:
netstat -W | grep ec2 | cut -d " " -f 18 | sort -u | cut -d "." -f 1,2,3,4 | xargs -0 -p "ping -c 10"
Produce l'output corretto, ma non chiama xargs
per riga:
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 spiegazione scritta di ogni passaggio è:
- Esegui netstat con il flag
-W
per ottenere FQDN completi e nomi host non brevi -
grep
per ec2 -
cut
dell'output per ottenere solo la colonna nome host -
sort
nomi host univoci -
cut
di nuovo il nome host per eliminare il numero di porta dalla fine, ad es.ec2-1-2-3.amazon.com.80
- > %codice% -
ec2-1-2-3.amazon.com
l'output inxargs
ogni host dieci volte
Penso di avere un problema con la variante OS X di ping
perché il piping dello stesso output su xargs
mostra otto righe:
netstat -W | grep ec2 | cut -d " " -f 18 | sort -u | cut -d "." -f 1,2,3,4 | wc -l
8
Mi sto concentrando sull'aspetto xargs qui. Questa è l'unica parte di questo compito che non funziona apparentemente.