Salut
je continue avec mes scripts :-)
J'ai dans une variable une adresse ip et le mask associé. Les deux ont été prises avec ifconfig, plus un grep plus des cut.
Maintenant je voudrais calculer l'adresse du sous réseau.Il faudrait faire un et logique en binaire pour l'avoir mais j'ai essayé typeset -i2 pour essayer de passer mes variables en binaire mais ça n'a pas marché...Des idées ??
Remarque : Si quelqu'un connais une commande pour l'avoir je suis prennant.
# Un autre language au menu...
Posté par Salvage . Évalué à -1.
tu pourrais implémenter du c dans ton script, ou même mieux utiliser le perl.
A toide voir, car je pense que tu arrives aux limites d'un language, et dans ce cas, il faut savoir jongler ;-)
[^] # Re: Un autre language au menu...
Posté par MDP . Évalué à 1.
# en bash
Posté par Bastien Mourgues . Évalué à 6.
exemple: echo $[ 7 & 3 ]
Pour plus d'info, consulte la section CALCUL ARITHMÉTIQUE de la page du manuel de bash.
bon scripts ;)
[^] # Re: en bash
Posté par MDP . Évalué à 3.
j'ai reussi à faire le & logique entre les 4 membres de l'ip et du mask et je retrouve forcement l'ip du sous réseau !! MECI :-)
en fait c'est dans un client qui se connecte à un serveur et qui doit lui donner la route et quand c'est automatique c'est bcp mieux pour les utilisateur !
[^] # Re: en bash
Posté par fabien . Évalué à 2.
on ne sait jamais ca peux servir a quelqu'un...
d'avance merci.
[^] # Re: en bash
Posté par MDP . Évalué à 2.
mask=`ifconfig eth0|grep Masque|cut -d ':' -f4`
echo $mask
mask1=`ifconfig eth0|grep Masque|cut -d ':' -f4|cut -d '.' -f1`
mask2=`ifconfig eth0|grep Masque|cut -d ':' -f4|cut -d '.' -f2`
mask3=`ifconfig eth0|grep Masque|cut -d ':' -f4|cut -d '.' -f3`
mask4=`ifconfig eth0|grep Masque|cut -d ':' -f4|cut -d '.' -f4`
ip=`ifconfig eth0|grep Masque|cut -d ':' -f2|cut -d ' ' -f1`
echo $ip
ip1=`ifconfig eth0|grep Masque|cut -d ':' -f2|cut -d '.' -f1`
ip2=`ifconfig eth0|grep Masque|cut -d ':' -f2|cut -d '.' -f2`
ip3=`ifconfig eth0|grep Masque|cut -d ':' -f2|cut -d '.' -f3`
ip4=`ifconfig eth0|grep Masque|cut -d ':' -f2|cut -d '.' -f4|cut -d ' ' -f1`
ip_res=$[${mask1} & ${ip1}]"."$[${mask2} & ${ip2}]"."$[${mask3} & ${ip3}]"."$[${mask4} & ${ip4}]
echo $ip_res
# Re:
Posté par kd . Évalué à 4.
Pour un petit script, c'est pas très grave, mais il vaut mieux prendre des habitudes.
Par exemple (il y a beaucoup d'autres solutions) :
adresseip="127.0.0.1";
IFS=' ' read ip3 ip2 ip1 ip0 <<EOF
$(IFS='.'; echo $adresseip)
EOF
echo "Voilà l'adresse IP: $ip3.$ip2.$ip1.$ip0";
ça peut normalement se faire avec une structure du type read <(IFS=. echo $ans), mais je n'ai pas réussi à le faire marcher.
Sinon, dans le même esprit que grep et cut, tu peux utiliser les syntaxe ${adresseip#.} et ${adresseip%.}. Voir la page man de bash (si tu utilises bash) pour plus de détails.
# ipcalc
Posté par doublehp (site web personnel) . Évalué à 1.
sinon, tu peux utiliser awk pour reformatter ton IP en entree, et faire des calculs simples dessus; le probleme est que les entiers BASH n est peut etre pas 32 bits ...
sinon, tu peux essayer apres awk un script 'bc' ... bc sert a faire des calculs mathematiques ... et lui il pourra manipuler des grans nombres ... meme des 128 si t est en v6.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.