Rechercher : dans
Par :

Script bash pour importer variable de config

Dernière réponse le 2 jun 2009 à 20:07:33 sezam2, le 9 mai 2009 à 01:22:28 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « script bash pour importer variable de config » dans :
[Bash] La variable d'environnement PATH VoirLa variable d'environnement PATH I. Préambule II. C'est quoi le shell ? III. Définition IV. Séance de dissection V. Ajouter un répertoire à la variable PATH VI. Et puis... I. Préambule Sous les systèmes GNU/Linux qu'on le veuille ou...
Créez votre propre commande linux Voir1. Création du script bash 2. Rendre la commande exécutable 1. Création du script bash Dans un premier temps, il faut que vous créiez votre script Bash qui sera exécuté lors de votre commande. Par exemple, pour le mien j'ai ...
Le remplacement de variables en shell Bash VoirLe remplacement de variables Introduction Il peut s'avérer utile de s'assurer qu'une variable est bien définie avant de procéder à son remplacement, ou tout simplement de s'assurer que celle-ci n'est pas vide, et dans ce cas de l'initialiser avec...
Importer et exporter des données sous MySQL VoirImportation et exportation Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...
VBScript - Les variables VoirLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Il s'agit en fait d'une zone de la mémoire réservée pour le stockage d'une valeur. Les...

1

mamiemando, le 9 mai 2009 à 02:00:26

Il manque la question / le problème. Merci de faire un effort sur l'orthographe.

Répondre à mamiemando

2

sezam2, le 9 mai 2009 à 02:20:14

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?

Répondre à sezam2

3

mamiemando, le 9 mai 2009 à 14:46:47

Ben non c'est très bien comme ça, en quoi cette solution ne convient pas ?

Répondre à mamiemando

4

sezam2, le 10 mai 2009 à 19:30:47

Si cette solution est bien pouvez vous ou n'importe qui ici me dire comment en crée un fichier rpm (opensuse)

merci

Répondre à sezam2

5

jeanbi, le 10 mai 2009 à 19:40:35

Re,
un script en rpm !!!
je vois pas l'interet , mais bon
http://wiki.mandriva.com/fr/Tutoriel_RPM
a+ FC 10 - Mandriva 2009 -Debian 4.0-
Les meilleures choses ont besoin de patience.(JC ANGLADE)
penser aux astuces 

Répondre à jeanbi

6

sezam2, le 10 mai 2009 à 21:33:30

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

Répondre à sezam2

7

Blanc57, le 10 mai 2009 à 22:33:00

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

Répondre à Blanc57

8

sezam2, le 10 mai 2009 à 23:49:41

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

Répondre à sezam2

9

Blanc57, le 10 mai 2009 à 23:55:10

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 ;)

Répondre à Blanc57

10

sezam2, le 11 mai 2009 à 00:02:44

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

Répondre à sezam2

11

mamiemando, le 11 mai 2009 à 00:29:38

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

Répondre à mamiemando

12

sezam2, le 14 mai 2009 à 00:56:46

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

Répondre à sezam2

13

mamiemando, le 14 mai 2009 à 11:07:35

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

Répondre à mamiemando

14

sezam2, le 2 jun 2009 à 18:18:08
  • +1

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é :)

Répondre à sezam2

15

 mamiemando, le 2 jun 2009 à 20:07:33

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

Répondre à mamiemando
Collection CommentÇaMarche.net