Bonjour,

J'ai un petit problème avec mon script bash. Pour expliquer l'idée de ce bash, je souhaiterais récupéré l'ip d'une machine en fonction de son interface (eth0 ou bond0). Donc j'ai mis mes commandes (qui fonctionne) dans des variables et je les ai testé avec un eval, cela fonctionne. Puis j'ai essayé de mettre en place un case en fonction de ma commande d'obtention de l'interface et là, rien ne s'affiche.

Voici le code bash :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
#!/bin/bash
 
OBTENTION_INTERFACE="ifconfig | awk '{print "'$1'","'$2'"}' |  grep -v '127.0.*' | awk '{print "'$1'"}' | grep -v 'inet6' | grep -B 1 'inet' | sed '1!d' | sed 's/://g'"
 
IP_BOND0="ifconfig bond0 | grep 'inet\|inet addr:' | awk '{print "'$2'"}' | cut -d ":" -f 2"
IP_ETH0="ifconfig eth0 | grep 'inet\|inet addr:' | awk '{ print "'$2'"}' | cut -d ":" -f 2"
 
case $OBTENTION_INTERFACE in
  'eth0')
    eval $IP_ETH0
  ;;
 
  'bond0')
    eval $IP_BOND0
  ;;
 
esac
donc quand j'essaie de faire un
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 eval $OBTENTION_INTERFACE
en dehors du case, j'obtiens : Puis je fais un et j'obtiens bien mon Donc je me posais la question, pourquoi en dehors du 'case' ça marche et quand j'assemble le tout, je n'obtiens rien.

Merci d'avance pour vos réponses et bonne journée.

Max