Récuperer champs de chaque ligne d'un fichier
samycaz
Messages postés
15
Date d'inscription
Statut
Membre
Dernière intervention
-
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
lami20j Messages postés 21331 Date d'inscription Statut Modérateur, Contributeur sécurité Dernière intervention -
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.
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:
- Récuperer champs de chaque ligne d'un fichier
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
3 réponses
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.
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.
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
https://forums.commentcamarche.net/forum/affich-1702792-shell-unix-fichier-ligne-par-ligne
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
d'autres infos sur ce que tu souhaite faire ici https://forums.commentcamarche.net/forum/affich-37620017-comment-lire-un-fichier-ligne-par-ligne
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
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
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.