Estou ciente dos métodos em que você pode executar um for
loop Bash e ping
vários servidores, existe uma ferramenta Linux CLI que eu possa usar que me permita fazer isso sem ter que recorrer a escrever um script Bash para ping
uma lista de servidores um por vez?
Algo assim:
$ ping host1 host2 host3
NOTA: Estou procurando especificamente pelo CentOS/Fedora, mas se funcionar em outras distribuições, tudo bem também.
Se você examinar o projeto NMAP, verá que ele inclui ferramentas adicionais além de apenas
nmap
. Uma dessas ferramentas énping
o , que inclui a seguinte habilidade:nping
está nos repositórios EPEL padrão para inicializar.Uso
Para executar ping em vários servidores, basta informar
nping
os nomes/IPs e qual protocolo deseja usar. Aqui, como queremos imitar o que aping
CLI tradicional faz, usaremos o ICMP.A única desvantagem que encontrei com esta ferramenta é o uso do modo ICMP que requer privilégios de root.
fping está em um pacote do Fedora com o mesmo nome e permite muitos hosts ou um conjunto de endereços IP.
Eu sugeriria usar o GNU Parallel
a saída será intercalada
Descrição:
Eu sei que não é especificamente o que você está pedindo, mas um script bash para fazer isso:
Isso levará seus endpoints como argumentos de linha de comando e enviará um ping de 5 contagens para cada um como um processo em segundo plano e aguardará que todos terminem antes de sair. Ele imprimirá as últimas três linhas da saída do ping que contém estatísticas úteis sobre a taxa de sucesso e a latência.
Suponho que isso pode fazer por você?
Ele aproveita
printf
a capacidade de "auto-iterar" seus argumentos enquanto reutiliza sua string de formato sobre cada argumento. O acimaprintf
, portanto, produz uma sequência deping <hostname> &
strings para cada host fornecido como argumento e alimenta essa sequência de comandos por meio de Substituição de Comando aoeval
comando para que eles sejam executados imediatamente.printf
eeval
comandos são padrão POSIX, assim como Substituição de Comandos.Envolvendo todo esse comando em um subshell que compreende um and-ed
wait
como este:fornece a capacidade de interromper tudo à vontade com um simples Ctrl+C.
Caso contrário, você pode controlar cada
ping
comando individualmente através do controle de trabalho usual do shell.Se seu shell também tiver suporte para substituições de processo, você também poderá usar o seguinte:
por alguns caracteres a menos para digitar.
A essência é a mesma do
eval
, mas alimenta a sequência deping
s para o comando.
(aka ) através do Process Substitution.source
Usando o
xargs
comando comum para construir uma execução de váriasping
solicitações:Onde
host1 host2 host3
pode ser um número variável de hosts (qualquer combinação de IP ou nome de host).Isso altera os
xargs
padrões para forçar 1 argumento de entrada por execução de ping e permitir um número ilimitado de processos filho paralelos (1 por host com ping). Provavelmente é aconselhável definir-P
(aka--max-procs
) para um valor sensato se pretender executar ping em um grande número de hosts (todos serão processados; apenas menos simultaneamente).É curto o suficiente para ser usado diretamente, pode ser adicionado como uma função ao seu perfil de shell ou arquivo rc, ou transformado em um pequeno script em seu arquivo
$PATH
. Nos exemplos abaixo,-P
foi definido como 10 para evitar o consumo excessivo de recursos.Roteiro de exemplo:
/usr/bin/mping
Função de exemplo dentro
~/.bashrc
E use como:
O Nmap suporta varreduras de ping (ICMP) e vários hosts:
nmap -sn -n 127.0.0.1 8.8.8.8
Você também pode criar um arquivo contendo todos os seus IPs de destino (separados por espaços ou novas linhas) chamado
targets.txt
. Então corra:nmap -sn -n -iL targets.txt
Opções explicadas:
-sn
Varredura de ping.-n
Desative a resolução DNS.-iL
Nome do arquivo de entrada.Outras opções interessantes caso você queira pingar um número muito grande de alvos:
-T4
Aumente o tempo para reduzir a duração da varredura.--min-parallelism 100
Aumente o número de sondas paralelas.-oG <file>
Grave os resultados da verificação em um arquivo no formato Grepable.Sem criar um arquivo
Lembre-se de que você também pode renunciar à criação de um arquivo e usar a
-
para receber entrada de um pipe|
, ou por meio de métodos tradicionais para redirecionar a saída via STDIN.Exemplos:
-ou-
-ou-
Referências
Eu não sei o que você quer exatamente, mas você pode alterar o último conjunto de 8 bits para o decimal 255, para que seus hosts recebam um broadcast, na verdade, ele transmitirá pacotes de ping para todos os dispositivos que existem em uma rede.
Resultado