Récuperer champs de chaque ligne d'un fichier

Fermé
samycaz Messages postés 15 Date d'inscription vendredi 15 juin 2012 Statut Membre Dernière intervention 22 juin 2012 - 15 juin 2012 à 14:53
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 18 juin 2012 à 19:24
Bonjour,

je travaille actuellement sur un projet de sauvegarde de configuration de switch. pour cela je réalise un script.

Actuellement, j'essaie de trouver un moyen pour récupérer des adresses ip afin de les utiliser comme variable dans mon script.

seulement je ne parvient pas à obtenir le résultat voulu. Il faudrait que je balais ligne par lignes le fichier .txt et probablement faire un while qui repete mes commandes jusqu'a que toutes adresses soient récuperer.

simple à dire mais je n'arrive pas à savoir comment récuperer une adresse pour l'utiliser comme variable ensuite, ni comment balayer tout le fichier .txt

le fichier.txt est sous la forme ci dessouss:

10.0.0.1 routeur1
10.0.0.2 nom-routeur2
20.30.33.1 nom_routeur3
...etc...

quelqu'un peut il m'aider, j'ai parcuru plein de tutoriel sur les script linux et perl mais je n'arrive pas à trouver la bonne procédure pour y parvenir.


A voir également:

3 réponses

rodoplop Messages postés 77 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 12
15 juin 2012 à 15:04
Bonjour,

quel langage souhaite tu utiliser pour ton script ?

Ne sachant pas lequel, voici une explication en PHP (en sachant que la logique sera la même quel que soit le langage utilisé, juste les nom de fonction qui peuvent changer)

1) tu ouvre ton fichier en lecture avec un fopen pour obtenir un handle.

2) ensuite tu récupère la ligne courante de ton fichier avec un fgets par exemple. tu récupère cette information dans une variable temporaire.
pour récupérer ce qui t'intéresse, tu peut faire un simple substr() sur cette variable pour ne récupérer que la première partie de la chaine qui t'intéresse.

3) tu fait le traitement que tu veux avec ta variable

4) tu répète le 2 et 3 tant que tu n'es pas à la fin de ton fichier.
0
samycaz Messages postés 15 Date d'inscription vendredi 15 juin 2012 Statut Membre Dernière intervention 22 juin 2012
15 juin 2012 à 16:25
merci de ton aide, mais le script dois fonctionner en shell. j'ai cherché des alternative avec perl mais je ne trouve pas les commandes approprié pour le faire.
par contre c bien cette idée de variable temporaire que je voudrais utiliser dans mon script afin de lancer mon programme sur chacun des switch un à un.
0
rodoplop Messages postés 77 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 12
15 juin 2012 à 16:32
Je ne suis pas un expert des scripts en shell mais tu devrait pouvoir trouver ton bonheur sur CCM
https://forums.commentcamarche.net/forum/affich-1702792-shell-unix-fichier-ligne-par-ligne
0
samycaz Messages postés 15 Date d'inscription vendredi 15 juin 2012 Statut Membre Dernière intervention 22 juin 2012
15 juin 2012 à 16:41
merci de ton aide, j'ai lu ce tuto mais il faut préalablement écrire le nom des valeur que l'on veut récuperer or dans mon cas, les valeurs sont différentes à chaque ligne
0
rodoplop Messages postés 77 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 12
15 juin 2012 à 16:54
justement, le lien montre bien que les donnée utilisé dans le script shell sont lues dans un fichier
d'autres infos sur ce que tu souhaite faire ici https://forums.commentcamarche.net/forum/affich-37620017-comment-lire-un-fichier-ligne-par-ligne
0
samycaz Messages postés 15 Date d'inscription vendredi 15 juin 2012 Statut Membre Dernière intervention 22 juin 2012
15 juin 2012 à 16:58
merci je vais essayer d'appliquer mes commandes en utilisant la structure proposé dans ce document
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
18 juin 2012 à 19:24
Salut,

Dans ton cas tu n'as pas vraiment besoin de récupérer une adresse ip, c'est-à-dire pas besoin d'une regex pour capturer les IP.
Vu la structure de ton fichier il suffit un split pour séparer les IP des noms de routers

Un exemple en perl

lami20j@debian-acer:~$ cat ip_variable.pl 
#!/usr/bin/perl
use strict;use warnings;

my %h_ip;

while(<DATA>){
  my ($cle,$val)=split;
  $h_ip{$cle}=$val;
}

print "$h_ip{$_}\t IP:$_\n" foreach sort keys %h_ip;
__END__
10.0.0.1 routeur1
10.0.0.2 nom-routeur2
20.30.33.1 nom_routeur3 
lami20j@debian-acer:~$ perl ip_variable.pl 
routeur1	 IP:10.0.0.1
nom-routeur2	 IP:10.0.0.2
nom_routeur3	 IP:20.30.33.1


0