Contraintes:
1. La vitesse compte.
2. Je suis autorisé à cingler une fois.
Je suis en train de débattre s'il faut utiliser Python ou Shellscripting. Existe-t-il une méthode plus rapide que bash
?
Voici le code actuel,
for ip in $(seq int1 int2); do
ping -c 1 xxx.xxx.xxx.$ip | grep "bytes from" &
done
Quelque chose de plus rapide que ça?
Vous devriez utiliser NMAP:
nmap -T5 -sP 192.168.0.0-255
Le code (diabolique) suivant s'exécute plus de deux fois plus vite que la méthode nmap
for i in {1..254} ;do (ping 192.168.1.$i -c 1 -w 5 >/dev/null && echo "192.168.1.$i" &) ;done
prend environ 10 secondes, où le nmap standard
nmap -sP 192.168.1.1-254
prend 25 secondes ...
Essayez ceci pour une liste unique.
ping -c 5 -b 10.10.0.255 | grep 'bytes from' | awk '{ print $4 }' | sort | uniq
une autre méthode (récupère les hôtes vivants):
fping -ag 192.168.1.0/24
Essayez ces deux commandes et voyez par vous-même pourquoi arp est plus rapide:
pour ip en $ (seq 1 254); do ping -c 1 10.185.0. $ ip>/dev/null; [$? -eq 0] && echo "10.185.0. $ ip UP" || :; terminé
pour ip en $ (seq 1 254); do arp -n 10.185.0. $ ip | grep Adresse; [$? -eq 0] && echo "10.185.0. $ ip UP" || :; terminé
C'est le code python pour le ping dans la plage 192.168.0.0-192.168.0.100. Vous pouvez changer de boucle à votre guise.
# -*- coding: utf-8 -*-
import socket
import os
import sys
up_ip =[] #list to store the ip-addresses of server online
for x in range(100): #here range is 0-100. You can change the range according to your comfort
server_ip = '192.168.0.'+ str(x)
rep = os.system('ping -c 1 ' + server_ip)
if rep == 0:
upip.append(server_ip)
print '*******************Server Is Up****************\n'
else:
print 'server is down \n'
print up_ip
Ce script s’exécute sur Git Bash (MINGW64) sous Windows et renvoie des messages en fonction du résultat du ping.
#!/bin/bash
#$1 should be something like "19.62.55"
if [ -z "$1" ]
then
echo "No identify of the network supplied, i.e. 19.62.55"
else
ipAddress=$1
for i in {1..256} ;do
(
{
ping -w 5 $ipAddress.$i ;
result=$(echo $?);
} &> /dev/null
if [ $result = 0 ]; then
echo Successful Ping From : $ipAddress.$i
else
echo Failed Ping From : $ipAddress.$i
fi &);
done
fi