Rechercher : dans
Par :

Aide sur script shell convertir ip hexa

Dernière réponse le 24 oct 2008 à 20:01:59 bir0ute, le 24 oct 2008 à 09:30:08 
 Signaler ce message aux modérateurs

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.

Meilleures réponses pour « aide sur script shell convertir ip hexa » dans :
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...

1

dubcek, le 24 oct 2008 à 09:50:37

Hello
et comme ça

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

192.168.0.1

Répondre à dubcek

2

bir0ute, le 24 oct 2008 à 10:05:41

Nan :(

bash-2.03$ IPHEXA="0xC0 0xA8 0x00 0x01"
bash-2.03$ printf "%d.%d.%d.%d" $IPHEXA
bash: printf: 0xC0: illegal number

Répondre à bir0ute

4

dubcek, le 24 oct 2008 à 10:34:09

Que répond which printf

Répondre à dubcek

5

bir0ute, le 24 oct 2008 à 10:36:42

Bash-2.03$ which printf
/usr/bin/printf

Répondre à bir0ute

11

dubcek, le 24 oct 2008 à 12:49:06

Essaye
IPHEXA="0xC0 0xA8 0x00 0x01"
/usr/bin/printf "%d.%d.%d.%d" $IPHEXA

Répondre à dubcek

7

asevere, le 24 oct 2008 à 10:50:32

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 :-)
Une belette, un lapin !?
C'est pas normal!

Répondre à asevere

8

bir0ute, le 24 oct 2008 à 11:47:26

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

Répondre à bir0ute

9

bir0ute, le 24 oct 2008 à 11:55:51

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...

Répondre à bir0ute

10

jipicy, le 24 oct 2008 à 12:12:54

Salut,

Enlève les quotes :

eval "echo $((16#"$i"))"

eval echo $((16#$i))
;-))
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

12

bir0ute, le 24 oct 2008 à 16:06:42

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

Répondre à bir0ute

13

jipicy, le 24 oct 2008 à 17:59:53

Que te renvoie les commandes suivantes :

readlink -f /bin/sh
ls -l /bin/sh
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

14

asevere, le 24 oct 2008 à 18:17:37

Je ne vois que ça en effet :)
Une belette, un lapin !?
C'est pas normal!

Répondre à asevere

15

 lami20j, le 24 oct 2008 à 20:01:59

Salut,

~$ for i in C0 A8 00 01;do echo -e "$(echo "ibase=16;$i" | bc) \c";done;echo
192 168 0 1

106485010510997108

Répondre à lami20j