#1 Le 23/11/2009, à 17:56
- Grünt
[ RESOLU ] Script bash, variables et lecture d'une ligne.
Bonjour à tous.
Je mets en place un système de sauvegarde automatique de configuration d'équipements réseau, et j'utilise un script shell pour cela.
J'ai un fichier de configuration qui contient des lignes décrivant chaque équipement, et je l'utilise pour affecter des variables d'environnement que j'utilise ensuite:
cat equipements.conf | grep -v ^# | grep -v "^$" | while read line
do
Type_equipement=`echo $line | awk '{print $1}'`
IP=`echo $line | awk '{print $2}'`
# Nom du fichier de sauvegarde.
nom_du_fichier=$chemin_des_sauvegardes`echo $line | awk '{print $3}'`"_"$jour
mot_de_passe_connexion=`echo $line | awk '{print $4}'`
mot_de_passe_enable=`echo $line | awk '{print $5}'`
options=`echo $line | awk '{print $6}'`
....
....
Il n'y a pas plus simple que tous ces "echo $line | awk"? Je trouve ça moche
Dernière modification par ǤƦƯƝƬ (Le 24/11/2009, à 00:24)
Red flashing lights. I bet they mean something.
Hors ligne
#2 Le 23/11/2009, à 18:09
- Tomzz
Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.
Bon, y a de grandes chances que je sois à coté mais si c'est le cas j'apprendrai un truc
Pour extraire des données d'un fichier j'utilise ça:
perl -0777ne 'print for /texte_qui_précède_info_à_extraire(.*?)texte_qui_suit_info_à_extraire/sg' /chemin/fichier_à_traiter>fichier_de_sortie
Ceci dit je sais envoyer le résultat dans un fichier de sortie, mais pas dans une variable.
Hors ligne
#3 Le 23/11/2009, à 18:17
- Grünt
Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.
j'aurais aimé ne pas utiliser perl, j'ai déjà du bash et du expect, rajouter un troisième langage va accentuer le côté "usine à gaz" alors que je préfère éviter ça.
De plus, ta méthode d'extraction ne me permet pas de traiter "d'un seul coup" toute ma ligne.
Ce que j'aimerais c'est ça:
variable1, variable2, variable3 = découpe ($line).
Je vais regarder du côté de "cut".
Red flashing lights. I bet they mean something.
Hors ligne
#4 Le 23/11/2009, à 18:37
- Tomzz
Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.
Et un truc du genre
for boucle in $line; do
kk[$cpt]="$boucle "
let "cpt = $cpt + 1"
done
donc, si les espaces sont au bon endroit on aurai Type_equipement=kk[1], IP=kk[2] et ainsi de suite
Hors ligne
#5 Le 23/11/2009, à 18:55
- JoelS
Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.
j'aurais aimé ne pas utiliser perl, j'ai déjà du bash et du expect, rajouter un troisième langage va accentuer le côté "usine à gaz" alors que je préfère éviter ça.
Je pense que l'intérêt, c'est bien de faire soit tout en Perl, par exemple avec le module Expect.pm, ou un autre plus adapté éventuellement, soit de tout faire en Expect. Expect est une surcouche de Tcl, tu as accès à l'ensemble du langage Tcl pour écrire ton script, et franchement tu peux faire en Tcl ce que tu fais en Bash (bien qu'à mon goût, Perl soit plus adapté).
Hors ligne
#6 Le 23/11/2009, à 18:57
- Grünt
Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.
Je pense que l'intérêt, c'est bien de faire soit tout en Perl, par exemple avec le module Expect.pm, ou un autre plus adapté éventuellement, soit de tout faire en Expect. Expect est une surcouche de Tcl, tu as accès à l'ensemble du langage Tcl pour écrire ton script, et franchement tu peux faire en Tcl ce que tu fais en Bash (bien qu'à mon goût, Perl soit plus adapté).
Je n'aime pas la syntaxe Tcl/Expect, c'est pour moi un "passage obligé" afin d'utiliser des interfaces telnet/ssh. Et je préfère en rester au bash, que j'apprécie et que je maitrise mieux (question de goût, hein ). Ceci dit, faudrait que je tente en python.
La blague, c'est aussi que je ne peux pas faire n'importe quoi sur le serveur qui fait tourner les scripts. Sur un GNU/Linux "de base", je suis certain de tomber sur un interpréteur bash (ou équivalent), tandis que perl ou python ce n'est pas certain.
Red flashing lights. I bet they mean something.
Hors ligne
#7 Le 23/11/2009, à 19:00
- JoelS
Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.
variable1, variable2, variable3 = découpe ($line).
Je vais regarder du côté de "cut".
et si je te dis ça (sans l'avoir testé):
cat mon_fichier | while read var1 var2 var3; do
echo var1=$var1
echo var2=$var2
echo var3=$var3
done
ça ne marche pas?
si non man bash et regardes la fonction intrinsèque read
Reste que Perl ou Tcl+Expect c'est nettement plus puissant...
Hors ligne
#8 Le 23/11/2009, à 19:02
- Airballman
Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.
sujet mis a part, tu as vu que ton lien concernant l hebergeur gratuit est mort grunt?
airballman@jabber.ubuntu-fr.org
Traitement d'images, systèmes embarqués et autres astuces Linux!
Hors ligne
#9 Le 23/11/2009, à 19:02
- Grünt
Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.
Sauf que j'ai une variable "options" qui est parfois présente mais pas toujours
Je vais regarder ça, merci
Red flashing lights. I bet they mean something.
Hors ligne
#10 Le 23/11/2009, à 19:34
- frafa
Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.
lol,mdr,...
Hors ligne
#11 Le 23/11/2009, à 20:30
- Grünt
Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.
sujet mis a part, tu as vu que ton lien concernant l hebergeur gratuit est mort grunt?
C'est de ta faute
Red flashing lights. I bet they mean something.
Hors ligne
#12 Le 23/11/2009, à 21:19
- frafa
Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.
ca y est j'ai trouvé le bon!
en fait c'est http://localhost
Hors ligne
#13 Le 23/11/2009, à 22:42
- Airballman
Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.
Lol,
en relisant mon message je vois que ce n'était pas clair... Je rigolais en disant ca ^^. Désolé
Mais j'ai quand même réfléchi 5 secondes avant de comprendre
airballman@jabber.ubuntu-fr.org
Traitement d'images, systèmes embarqués et autres astuces Linux!
Hors ligne
#14 Le 23/11/2009, à 23:49
- noska
Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.
Salut !
en utilisant set :
grep -v '^#\|^$' equipements.conf | while read line
do
set $line
Type_equipement=$1
IP=$2
nom_du_fichier=$3
mot_de_passe_connexion=$4
done
ou avec les tableaux (bash) :
grep -v '^#\|^$' equipements.conf | while read line
do
a=(0 $line)
Type_equipement=${a[1]}
IP=${a[2]}
nom_du_fichier=${a[3]}
mot_de_passe_connexion=${a[4]}
done
Hors ligne
#15 Le 24/11/2009, à 00:24
- Grünt
Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.
Merci noska !
Red flashing lights. I bet they mean something.
Hors ligne