2011-08-15 6 views
0

Je cette adresse IP qui sont utilisés dans un fichier:et des plages d'impression entre les adresses IP avec bash

192.168.1.121 192.168.1.141 192.168.1.172 192.168.1.180 192.168.1.180 192,168 .1.181 192.168.1.182 192.168.1.185 192.168.1.190

Ce que je veux faire est d'être en mesure d'imprimer les plages entre les adresses IP utilisées avec Bash. Ainsi, par exemple en regardant l'exemple 192.168.1.121 est utilisé mais je veux être capable d'imprimer toutes les adresses IP entre 121 et 141. De même entre 141 et 172. Je ne suis pas inquiet d'imprimer des adresses IP avant 121 cependant.

Existe-t-il un moyen de le faire?

Remerciements Kuti.

Répondre

0

Oui.

addresses=(`< listofnums`) 
network=${addresses[0]%.*} 
hosts=(${addresses[@]##*.}) 

for ((i=${hosts[0]}; i<255; ++i)) 
do 
     case "${hosts[@]}" in *"$i"*) ;; *) echo "$network.$i" ;; esac 
done 
+0

Impressionnant, merci beaucoup et il semble fonctionner. Pourriez-vous m'expliquer gentiment? Je suis un peu nouveau pour bash. – kuti

+0

Voici la section expliquant l'expansion des paramètres (les instances de '$ {}'): http://www.gnu.org/software/bash/manual/bashref.html#Shell-Parameter-Expansion Et la section expliquant le cas : http://www.gnu.org/software/bash/manual/bashref.html#Conditional-Constructs – paulmelnikow

+0

Exactement ce que je cherchais. Merci encore!. – kuti

Questions connexes