Verifique un range de direcciones IP para ver si un host está activo

Necesito escribir un script de shell bash que verifique un range de direcciones IP para ver si un server está "vivo" en esa dirección. También necesito enumerar los numbers de IP de aquellos que están "vivos", y proporcionar un resumen que muestre la cantidad de direcciones IP "vivas" y "no vivas". El range de direcciones estará en una networking de "Clase C". Tengo problemas para descubrir cómo pasar cada arg y hacer que emita un ping a cada dirección individual dentro del range.

A continuación se muestra una ejecución de muestra del script que pretendo crear.

$ programName 192.168.42 18 22 Checking: 192.168.42.18 19 20 21 22 Live hosts: 192.168.42.21 192.168.42.22 There were: 2 alive hosts 3 not alive hosts found through the use of 'ping'. 

Solutions Collecting From Web of "Verifique un range de direcciones IP para ver si un host está activo"

Esto debería ayudarte a comenzar.

 #!/bin/bash for i in `seq ${2} ${3}` do ping -c 1 ${1}.${i} > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "${1}.${i} responded." else echo "${1}.${i} did not respond." fi done 

Muestra de salida:

 xxxx@xxxxxx:~$ bash test.sh 10.140.0 100 103 10.140.0.100 responded. 10.140.0.101 did not respond. 10.140.0.102 did not respond. 10.140.0.103 did not respond. 

El manual bash probablemente pueda manejar cualquier otra cosa que necesites.

Use nmap . Es la herramienta estándar para el trabajo.

Como solo quiere saber qué hosts están en línea (y responder), ejecute un "escaneo de ping": nmap -sP .

Si no le importa el formatting de la salida, su script se puede escribir de esta manera:

 #!/bin/sh nmap -sP "$1.$2-$3"