Juin 152011
quand on arrête un paquet de machine et qu’on les redémarre, on aime bien savoir quand elles sont UP.
le top, c’est quand on attend pas entre chaque ping de serveurs.
voici donc un script pour solaris, vous pouvez l’adapter pour votre Unix.
juste le temps de lancer tous les pings en tache de fond et d’afficher le résultat.
ah et aussi en résumé, il affichera le nombre de serveurs UP et ceux qui sont DOWN
Download : massping.sh
#!/bin/ksh # # vim:tabstop=3:syntax=sh: # # --------- ## Script : mass_ping ## Version : 0.2 ## Objet : paralellise les ping et affiche un resume ##---------------------------------------------------------------------------- # 0.1 21-jun-09 - Cedrick Gaillard # 0.2 24-jun-09 - affiche l'usage. # - ajout de la redirection de stderr pour compter les unknowns. #----------------------------------------------------------------------------- [ -z "$1" -o "$1" = "-h" ] && { cat << EOF ping la liste de serveurs donnes en argument. les pings sont parallelises, peu d'attente pour le resultat. affiche un resume en fin de liste. exemple: # time $0 \$(/tools/easy_conf/server_list.sh -site "siteA") |grep -v "is alive" ping: unknown host machine1.com. ping: unknown host machine2.com. no answer from 192.168.240.196 no answer from machine4.com. ping: unknown host ? UP: 640 - DOWN: 2 - UNKNOWN: 3 real 0m12.761s user 0m4.234s sys 0m6.354s EOF exit 0 } Ping () { for i in $* do ping $i 2 2>&1 & done } x=0 y=0 z=0 Ping $* |while read ligne do case $ligne in *alive*) x=$(($x + 1)) ;; *answer*) y=$(($y + 1)) ;; *) z=$(($z + 1)) ;; esac echo $ligne done [ "$z" -ne "0" ] && u=" - UNKNOWN: $z" echo echo "UP: $x - DOWN: $y $u"
temps pour pinguer environ 900 machines:
$ time ./mass_ping.sh $(<mo) |tail -1 UP: 574 - DOWN: 295 real 0m19.570s user 0m6.080s sys 0m9.992s