Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/03/2010, à 17:42

droopy191

[Résolu] [bash] nom de variable en paramètres

Salut,

Question surement toute bete pour les pros du bash mais je coince.

J'essaie de faire un script pour du wake on lan en fonction du nom de machine avec une table de correspondance ( nom / adresse mac ).

script démarré par     wakeup.sh nom_machine

#!/bin/sh
# Script de démarrage des machines par wake on lan
#### Table des adresses mac ####
machine1="00...."
machine2="00...."

echo Réveil de $1
wakeonlan adresse de m1 ou m2 suivant la valeur de $1

Je pourrai faire un case $1 =  machine1, machine2... mais n'y aurait il pas plus simple ?
Merci pour vos conseils.

Dernière modification par droopy191 (Le 14/03/2010, à 19:19)

Hors ligne

#2 Le 14/03/2010, à 18:15

gilbert

Re : [Résolu] [bash] nom de variable en paramètres

Salut,

j'ai absolument rien compris de ta question, mais tu veux faire qqch du genre ?

#!/bin/sh
# Script de démarrage des machines par wake on lan
#### Table des adresses mac ####
machine1="00...."
machine2="00...."

eval recup=\$$1

echo "réveil de $recup"

Simplement moi-même..

Hors ligne

#3 Le 14/03/2010, à 19:05

droopy191

Re : [Résolu] [bash] nom de variable en paramètres

gilbert a écrit :

Salut,

j'ai absolument rien compris de ta question, mais tu veux faire qqch du genre ?

Désolé si ce n'était pas clair.
J'essaie d'expliquer

j'appelle mon script par
wakeup.sh nom_machine

donc dans $1 j'ai un nom de machine ( par ex, machine1 )
comment faire pour faire correspondre $1  qui contient le nom de la machine avec mon autre variable machine1 qui contient l'adresse mac.

je peux faire comme ca mais n'y a-t'il pas plus simple ? Par plus simple, je veux dire lister toutes les machines dans un case/esac.

case $1 in
"machine1")
echo "réveil de $1"
wakeonlan $machine1
;;
"machine2")
echo "réveil de $1"
wakeonlan $machine2
;;
esac

Dernière modification par droopy191 (Le 14/03/2010, à 19:08)

Hors ligne

#4 Le 14/03/2010, à 19:13

gilbert

Re : [Résolu] [bash] nom de variable en paramètres

bin t'as essayé mon exemple ??

Non apparamment big_smile


Simplement moi-même..

Hors ligne

#5 Le 14/03/2010, à 19:18

droopy191

Re : [Résolu] [bash] nom de variable en paramètres

gilbert a écrit :

bin t'as essayé mon exemple ??

Non apparamment big_smile

En effet, j'ai répondu avant d'essayer wink
Ca marche parfaitement, merci.

Très bete script mais si ca peut servir à qq'un

#!/bin/sh
# Script de démarrage des machines par wake on lan

#### Table des adresses mac ####
machine1="00:2...."
machine2="00:1..."
machine3="00:3..."

# début du script
eval machine=\$$1

if [ "$machine" == "" ]
then echo "La machine nommée $1 n'est pas connue !"
echo "Editez le script et ajoutez son adresse mac";
else
echo "Réveil de $machine"
wakeonlan $machine;
fi

Dernière modification par droopy191 (Le 14/03/2010, à 19:39)

Hors ligne

#6 Le 14/03/2010, à 21:14

Totor

Re : [Résolu] [bash] nom de variable en paramètres

Bonsoir,

gilbert a écrit :

[...]
eval recup=\$$1
echo "réveil de $recup"

à remplacer par echo "réveil de ${!1}"


-- Lucid Lynx --

Hors ligne

#7 Le 14/03/2010, à 22:06

gilbert

Re : [Résolu] [bash] nom de variable en paramètres

Totor a écrit :

Bonsoir,

gilbert a écrit :

[...]
eval recup=\$$1
echo "réveil de $recup"

à remplacer par echo "réveil de ${!1}"

excellent!! Je ne connaissais pas! ça existe depuis quelle version de bash ?

EDIT : je me réponds à moi même. j'ai trouvé en lisant le HISTORY de bash. C'est à partir de bash 3.00

Pour ceux que ça intéresse : http://mywiki.wooledge.org/BashFAQ/006

Dernière modification par gilbert (Le 14/03/2010, à 22:18)


Simplement moi-même..

Hors ligne