Posez votre question Signaler

Script bash pour importer variable de config [Résolu]

sezam2 74Messages postés 4 février 2009Date d'inscription 26 mars 2010Dernière intervention - Dernière réponse le 2 juin 2009 à 20:07
Bonjour,
salut et encore une fois le fameux script
#!/bin/bash

if [ -e /opt/topnet/mnt/mysql.pipe ] ; then
 while [ -e /opt/topnet/mnt/mysql.pipe ]
  do
  mysql -u syslog --password=syslog -D syslog < /opt/topnet/mnt/mysql.pipe
 done

else

mkfifo /opt/topnet/mnt/mysql.pipe
 fi


les variable
$user
$password
$base
d'un fichier de configuration
j'ai fait cet essai mai il marche pas
j'ai ajouter le script suivan devant le script précedent
#!/bin/bash
SD = cat'config'
for i in $SD; do
echo $i;
done
if [ -e /opt/topnet/mnt/mysql.pipe ] ; then
 while [ -e /opt/topnet/mnt/mysql.pipe ]
  do
  mysql -u syslog --password=$pwd -D syslog < /opt/topnet/mnt/mysql.pipe
 done

else

mkfifo /opt/topnet/mnt/mysql.pipe
 fi


je veut récuprer
Lire la suite 

Script bash pour importer variable de config »

15 réponses
Réponse
+1
moins plus
c'est résolu je n'ai pas à parser

je cree un fichie config

/etc/config.cfg
VAR1=v
VAR2=w



pui au début de mon scrippt

j'ajoute

source /etc/config.cfg

et le tour est joué :)
Ajouter un commentaire
Réponse
+0
moins plus
Il manque la question / le problème. Merci de faire un effort sur l'orthographe.
Ajouter un commentaire
Réponse
+0
moins plus
La question est la suivante

je n'arrive pas à recuppere les varaiable ds le script toutfois j'ai trouvé la soltion suivante

#!/bin/bash
. ./etc/mapping.cfg
if [ -e /opt/topnet/mnt/mysql.pipe ] ; then
 while [ -e /opt/topnet/mnt/mysql.pipe ]
  do
  mysql -u $base  --password=syslog -D syslog < /opt/topnet/mnt/mysql.pipe
 done

else

mkfifo /opt/topnet/mnt/mysql.pipe
 fi


avec
mapping.cfg contient
base=nom_base

et
jai fait chmod +x /etc/mapping.cfg




2 ça marche mais il y' a til mieux?
Ajouter un commentaire
Réponse
+0
moins plus
Ben non c'est très bien comme ça, en quoi cette solution ne convient pas ?
Ajouter un commentaire
Réponse
+0
moins plus
Si cette solution est bien pouvez vous ou n'importe qui ici me dire comment en crée un fichier rpm (opensuse)

merci
Ajouter un commentaire
Réponse
+0
moins plus
re,
un script en rpm !!!
je vois pas l'interet , mais bon
http://wiki.mandriva.com/fr/Tutoriel_RPM
a+
sezam2- 10 mai 2009 à 21:33
salut

il n'ya pas seuleemnet le scrit il y a :

le fichier config /etc/mapping.cfg

le fichier /user/bin/mapping qui contient ce script la


kle fichier init /etc/init.d/mapping qui permet les commande rcmapping start /stop et status..


je veut faire un fichier rpm qui avec la commande

rpm -Uvh mapping.rpm

installe ces fichiers

merci
Ajouter un commentaire
Réponse
+0
moins plus
erreur...

Je n'avais pas vu les précédentes réponses...

par contre, la syntaxe me parait fausse dans la seconde partie du script, lorsque tu veux déclarer la varable SD :
SD = cat 'config'


Il me semble que ce serait plutôt :

SD=$(cat 'config')

afin que le "car" soit executé car selon ta syntaxe, ta variable SD sera égale à "cat 'config' " sans que la commande "cat" ne soit executée...
Ajouter un commentaire
Réponse
+0
moins plus
merci mais j'ai renancé à cette tentative dead end car même si je rectifie SD=$(cat 'config')

je n'ai aucun moyen d'accéder au variables

base=nom_base
pwd=mot_passe
///////////////////// si vous le savez dites le moi ;)
ds le fichier config

j'ai opté pour la solution suivante
#!/bin/bash
. ./etc/mapping.cfg
if [ -e /opt/topnet/mnt/mysql.pipe ] ; then
 while [ -e /opt/topnet/mnt/mysql.pipe ]
  do
  mysql -u $base  --password=syslog -D syslog < /opt/topnet/mnt/mysql.pipe
 done

else

mkfifo /opt/topnet/mnt/mysql.pipe
 fi



mon problème maintennat est comment créer un rpm qui en l'installant

va copier

le fichier config /etc/mapping.cfg

le fichier /user/bin/mapping qui contient ce script la


le fichier init /etc/init.d/mapping qui permet les commande rcmapping start /stop et status..


merci
Blanc57- 10 mai 2009 à 23:55
Désolé... Je ne pourrai pas vous être d'une plus grande aide quant à la création de votre RPM, n'ayant aucune expérience sur le sujet...

Mais bonne chance malgré tout ;)
Ajouter un commentaire
Réponse
+0
moins plus
merci

une dernière question

si je fait

SD=$(cat 'config')
le
comment je peut accéder aux variablee contenue dans le fichier config qui sont de ce type

user=blabla
password=titi
base=tata
pipe=toto.pipe

de telle sorte que mon scripte soit
mysql -u $user --password=$password -D $base < /opt/topnet/mnt/$pipe

ou devraige garder le

. ./config au debut du script
merci
Ajouter un commentaire
Réponse
+0
moins plus
Tu peux stocker une instruction shell (dont une déclaration de variable) dans une variable shell. Ainsi tu peux tout à fait écrire :
#!/bin/sh
cmd="ls"
$cmd

Ça permet notamment de générer des commandes shell à la volée. Toutefois dans ton cas il me parait plus logique d'inclure le fichier via un "source config" ou ". config".

Bonne chance
Ajouter un commentaire
Réponse
+0
moins plus
Bonsoir on est revenu à ala case départ

On m'a refuser la solution de

. .$/etc/mapping.cfg


et je doit faire un script qui récupère des variables d'un fichier de configuation


#!/bin/bash
recupéraion des variable

if [ -e /opt/topnet/mnt/mysql.pipe ] ; then
 while [ -e /opt/topnet/mnt/mysql.pipe ]
  do
  mysql -u $base  --password=syslog -D syslog < /opt/topnet/mnt/mysql.pipe
 done

else

mkfifo /opt/topnet/mnt/mysql.pipe
 fi


au secour
Ajouter un commentaire
Réponse
+0
moins plus
Bah il faut parser ton fichier de configuration à la main. C'est effectivement dangereux si quelqu'un introduit une ligne malicieuse dans le fichier et que les droits de celui-ci sont moindres que ceux du script.

Dans ton cas, ton script doit donc lire le fichier de configuration lis ligne par ligne. Si la ligne une chaîne contenant un = c'est une affectation (le mieux c'est de vérifier que la ligne à une bonne tête avec une expression régulière).

Ceci fait, il ne reste plus qu'à extraire l'opérande gauche de l'affectation (nom de la variable) et l'opérande droite (valeur).

Bonne chance
Ajouter un commentaire
Réponse
+0
moins plus
J'ai un peu de mal à suivre. C'est ce que je t'avais dit dans le message <11> sachant que ". /etc/config.cfg " et "source /etc/config.cfg" font la même chose. Or dans <12> tu disais que cette solution avait été rejetée.

Enfin bref, peu importe, l'important c'est que ton problème soit résolu.

Bonne continuation
Ajouter un commentaire
Ce document intitulé « script bash pour importer variable de config » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?