Um script para efetuar ping de um grupo de IPs e retornar apenas com o Online?

0

Eu preciso de um script que pingue um grupo de ips e retorne como resultado o on-line, ele vai ecoar por exemplo   10.10.10.10 está online

10.10.10.11 está on-line

10.10.10.15 está online

Sem usar nenhum pacote ou utilitário de terceiros!

Alguma ajuda?

    
por nux 30.01.2014 / 00:31

2 respostas

1

O script abaixo fará um loop em uma sub-rede ips e retornará como resultado apenas on-line:

#!/bin/bash

is_alive_ping()
{
  ping -c 1 $1 > /dev/null
  [ $? -eq 0 ] && echo Node with IP: $i is Online.
}

for i in 10.1.1.{1..255} 
do
is_alive_ping $i & disown
done

Observe a alteração 10.1.1. para você sub-rede, um 1..255 informa o script para iniciar a partir de 10.1.1.1 e loop dizer 10.1.1.255

Executar:

./ping_scan.sh
    
por nux 30.01.2014 / 00:31
1

Não há necessidade de um script. nmap pode fazer isso por você .

Por exemplo, para escanear uma rede 10.10.10.0/24, faça

nmap -sn 10.10.10.0/24

Isso relatará que os hosts estão sendo baseados em responder a uma solicitação de eco ICMP, conhecida como 'ping'. Um exemplo de saída:

Starting Nmap 5.21 ( http://nmap.org ) at 2014-01-30 00:40 CET
Nmap scan report for 10.10.10.1
Host is up (0.0061s latency).
Nmap scan report for 10.10.10.2
Host is up (0.00071s latency).
Nmap scan report for android (10.10.10.112)
Host is up (0.0087s latency).
Nmap scan report for laptop (10.10.10.134)
Host is up (0.00037s latency).
Nmap scan report for 10.10.10.151
Host is up (0.00094s latency).
Nmap scan report for 10.10.10.203
Host is up (0.00060s latency).
Nmap done: 256 IP addresses (6 hosts up) scanned in 3.41 seconds
    
por gertvdijk 30.01.2014 / 00:42