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 23/11/2009, à 16: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 neutral

Dernière modification par ǤƦƯƝƬ (Le 23/11/2009, à 23:24)


Red flashing lights. I bet they mean something.

Hors ligne

#2 Le 23/11/2009, à 17: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 big_smile
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, à 17: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, à 17: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, à 17:55

JoelS

Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.

ǤƦƯƝƬ a écrit :

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, à 17:57

Grünt

Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.

JoelS a écrit :

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 wink). 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, à 18:00

JoelS

Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.

ǤƦƯƝƬ a écrit :

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, à 18: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?

Hors ligne

#9 Le 23/11/2009, à 18: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 big_smile

Je vais regarder ça, merci smile


Red flashing lights. I bet they mean something.

Hors ligne

#11 Le 23/11/2009, à 19:30

Grünt

Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.

Airballman a écrit :

sujet mis a part, tu as vu que ton lien concernant l hebergeur gratuit est mort grunt?

C'est de ta faute tongue


Red flashing lights. I bet they mean something.

Hors ligne

#13 Le 23/11/2009, à 21: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é tongue
Mais j'ai quand même réfléchi 5 secondes avant de comprendre smile

Hors ligne

#14 Le 23/11/2009, à 22: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 23/11/2009, à 23:24

Grünt

Re : [ RESOLU ] Script bash, variables et lecture d'une ligne.

Merci noska ! smile smile


Red flashing lights. I bet they mean something.

Hors ligne