acquarica ha scritto:
il problema è che non tutti gli ip sono accessibili e quindi quando non pinga resta bloccato su quell'ip per qualche secondo... io vorrei che una volta che l'ip non risponde si passi subito a quello successivo...
Inoltre mi servirebbe un modo per capire gli ip che hanno risposto e nello stesso tempo nascondere tutta la procedura dei ping... sono un po difficile io...
1) puoi impostare il timeout di un'operazione di ping in modo tale da non farle superare mai un tempo prestabilito con l'opzione -w, senza nemmeno la necessità di -c.
2) il modo per capire se l'ip ha risposto e' dato dal valore di ritorno di ping (0 se l'host ha risposto, 1 se no) - ovvero puoi invocare ping e poi controllare la variabile "$?" che in Bash corrisponde al valore di ritorno dell'ultimo comando lanciato
3) puoi nascondere l'output (selettivamente solo quello inviato a stdout, oppure solo a stderr, o tutto l'output) usando le normali redirezioni della shell: ad esempio,
ping pippo &>/dev/null non caccierà nessun output (& significa "tutto l'output" - in questo caso, lo giriamo a /dev/null, ovvero lo nascondiamo).
Puoi quindi fare qualcosa tipo:
Codice: Seleziona tutto
#!/bin/bash
for ((t=128; t<=130; t++))
do
addr=10.0.0."$t"
echo -n "$addr : "
ping $addr -w1 &>/dev/null
if [ $? = 0 ]; then
echo "UP"
else
echo "DOWN"
fi
done
echo "FINE"
exit 0
Ciao
nuu
Learn to pause -- or nothing worthwhile can catch up to you.