stremer
(usa Arch Linux)
Enviado em 17/03/2009 - 15:28h
Seguinte amigo, seu código tem alguns erros, dentre eles, você esta fazendo somente 3 iterações (quando deveria ao todo correr toda a faixa de ip). Além disso do jeito que esta trabalhando será complicado fazer um loop (pois ta jogando todo o resultado em uma unica variavel, é melhor criar uma array)... além de mais alguns outros errinhos que vi... enfim, segue abaixo script corrigido e funcional:
------ inicio ---
#!/bin/bash
#Verifica eth0
VERI_ETH0=`ifconfig |grep eth0|awk '{print $1}'|wc -l`
if [ $VERI_ETH0 = "1" ]; then
ETH0=1
IPETH0=`ifconfig eth0|grep inet|awk '{print $2 }'|cut -d ":" -f2` 2> /dev/null
MASK_ETH0=`ifconfig eth0|grep Mask|awk '{print $4}'|cut -d ":" -f 2`
NMAP_ETH0=( ${NMAP_ETH0[@]} `nmap -sP 10.100.49.1-20|grep Host|awk '{print $2}'|sed s/[\(\)]//g|sort`)
count=1
for item in ${NMAP_ETH0[@]}; do
PING_ETH0=`ping -c 10 $item |grep packets|awk '{print $4}'`
echo "$item - Packets: $PING_ETH0"
count=`expr $count + 1`
done
else
ETH0=0
fi
----- fim ------
Substitua: 10.100.49.1-20 pela sua faixa de ip.
Testei aqui na minha rede e blz...
Em relação a pergunta do amigo acima sobre awk, é um utilitario que serve para tratar resultado de texto linha a linha (e não por coluna) por isso a confusão do script acima...
Boa sorte no programa completo.