Script bash pour importer variable de config

Résolu
sezam2 Messages postés 89 Statut Membre -  
mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   -
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
Configuration: Linux Suse
Firefox 3.0.4

13 réponses

  1. sezam2 Messages postés 89 Statut Membre 5
     
    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é :)
    3
  2. sezam2 Messages postés 89 Statut Membre 5
     
    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?
    1
  3. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    Il manque la question / le problème. Merci de faire un effort sur l'orthographe.
    0
  4. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    Ben non c'est très bien comme ça, en quoi cette solution ne convient pas ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. sezam2 Messages postés 89 Statut Membre 5
     
    Si cette solution est bien pouvez vous ou n'importe qui ici me dire comment en crée un fichier rpm (opensuse)

    merci
    0
  7. jeanbi Messages postés 15399 Date d'inscription   Statut Contributeur Dernière intervention   2 383
     
    re,
    un script en rpm !!!
    je vois pas l'interet , mais bon
    http://wiki.mandriva.com/
    a+
    0
    1. sezam2 Messages postés 89 Statut Membre 5
       
      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
      0
  8. Blanc57 Messages postés 377 Statut Membre 73
     
    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...
    0
  9. sezam2 Messages postés 89 Statut Membre 5
     
    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
    0
    1. Blanc57 Messages postés 377 Statut Membre 73
       
      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 ;)
      0
  10. sezam2 Messages postés 89 Statut Membre 5
     
    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
    0
  11. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    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
    0
  12. sezam2 Messages postés 89 Statut Membre 5
     
    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
    0
  13. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    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
    0
  14. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    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
    0