Aide sur script shell convertir ip hexa

bir0ute -  
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
Bonjour à tous,

Je cherche a exécuter un script qui me permettre de traduire un ip hexadécimal en décimal.

Voici mon script :

#!/bin/sh

set -x

compteur=`expr 0`

IPHEXA="C0 A8 00 01"

for i in "$IPHEXA"
do
compteur=`expr $compteur + 1`
test."$compteur"=`echo $((16#$i))`
done

echo "$test.1"."$test.2"."$test.3"."$test.4"


Et voici ce que j'ai en retour :

+ expr 0 
compteur=0
IPHEXA=C0 A8 00 01
+ expr 0 + 1 
compteur=1
./script.ip.sh: syntax error at line 1: `(' unexpected


Merci de votre aide.

Sab.
A voir également:

4 réponses

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
et comme ça

IPHEXA="0xC0 0xA8 0x00 0x01"
printf "%d.%d.%d.%d" $IPHEXA

192.168.0.1
0
bir0ute
 
Nan :(

bash-2.03$ IPHEXA="0xC0 0xA8 0x00 0x01"
bash-2.03$ printf "%d.%d.%d.%d" $IPHEXA
bash: printf: 0xC0: illegal number
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637 > bir0ute
 
que répond which printf
0
bir0ute > dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention  
 
bash-2.03$ which printf
/usr/bin/printf
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637 > bir0ute
 
essaye
IPHEXA="0xC0 0xA8 0x00 0x01"
/usr/bin/printf "%d.%d.%d.%d" $IPHEXA
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Salut,

Essayes avec ça:
#!/bin/sh

set -x

compteur=`expr 0`

IPHEXA="C0 A8 00 01"

for i in $IPHEXA; # pas de double quotes sinon, cela représente un seul élément.
do
compteur=`expr $compteur + 1`
# Une variable ne peut contenir un point dans son nom. donc '.' => '_'
eval test_$compteur=`echo $((16#$i))` # pour des nom de variable dynamique, utiliser eval <definition de variable>=<valeur>
done

echo "$test_1"."$test_2"."$test_3"."$test_4"


A plus :-)
0
bir0ute
 
Merci pour les corrections. J'ai une erreur :( :

+ expr 0
compteur=0
IPHEXA=C0 A8 00 01
+ expr 0 + 1
compteur=1
./script.ip.sh: syntax error at line 1: `(' unexpected
0
bir0ute
 
voici mes tests :

bash-2.03$ eval echo $((16#C0))
192
bash-2.03$ echo $((16#C0))
192



for i in $IPHEXA;
do
compteur=`expr $compteur + 1`
eval "echo $((16#"$i"))"
done


+ expr 0 
compteur=0
IPHEXA=C0 A8 00 01
+ expr 0 + 1 
compteur=1
+ eval echo $((16#C0)) 
./script.ip.sh: syntax error at line 1: `(' unexpected


Je ne comprends pas pourquoi ça fonctionne bien en ligne de commande mais pas dans mon script...
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Enlève les quotes :
eval "echo $((16#"$i"))"

eval echo $((16#$i))
;-))
0
bir0ute > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
Bah non toujours le meme probleme :

bash-2.03$ cat script.ip.sh 
#!/bin/sh

set -x

compteur=`expr 0`

IPHEXA="C0 A8 00 01"

for i in $IPHEXA;
do
compteur=`expr $compteur + 1`
eval echo $((16#$i))
done

echo "$test_1"."$test_2"."$test_3"."$test_4"
bash-2.03$ ./script.ip.sh 
+ expr 0 
compteur=0
IPHEXA=C0 A8 00 01
./script.ip.sh: syntax error at line 12: `(' unexpected
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896 > bir0ute
 
Que te renvoie les commandes suivantes :
readlink -f /bin/sh
ls -l /bin/sh
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
 
Je ne vois que ça en effet :)
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,
~$ for i in C0 A8 00 01;do echo -e "$(echo "ibase=16;$i" | bc) \c";done;echo
192 168 0 1

0