Script de sauvegarde
Lartishot
Messages postés
63
Date d'inscription
Statut
Membre
Dernière intervention
-
Lartishot Messages postés 63 Date d'inscription Statut Membre Dernière intervention -
Lartishot Messages postés 63 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je tiens a préciser que je suis débutant sur ce langage et dont j'ai beaucoup de mal a mis mettre donc essayé d’être le plus précis possible pour que je puisse bien comprendre.
Dans l'optique de créer un script de sauvegarde d'équipements automatique,
Je souhaite lire un fichier txt contenant des informations, sous la forme ci-dessous, pour les attribuer chacune à une variable.
-----------------------------------------------
exemple.txt :
info1:info11:info12:info13
info2:info21:info22:info23
etc...
-----------------------------------------------
Pour obtenir le résultat suivant :
$ip = info1
$port = info11
$nom_eqpmt=info12
etc...
Utiliser les variables précédemment créés pour se connecter etc sur un équipement pour faire la sauvegarde du matos et d'effectuer cette action pour chaque ligne du fichier txt (une ligne correspondant à un équipement différent).
Si quelqu'un arrive à me mettre sur la voie, se serais au top.
J'espère que j'ai été assez compréhensible sinon n'hésité pas a me poser des questions.
Je tiens a préciser que je suis débutant sur ce langage et dont j'ai beaucoup de mal a mis mettre donc essayé d’être le plus précis possible pour que je puisse bien comprendre.
Dans l'optique de créer un script de sauvegarde d'équipements automatique,
Je souhaite lire un fichier txt contenant des informations, sous la forme ci-dessous, pour les attribuer chacune à une variable.
-----------------------------------------------
exemple.txt :
info1:info11:info12:info13
info2:info21:info22:info23
etc...
-----------------------------------------------
Pour obtenir le résultat suivant :
$ip = info1
$port = info11
$nom_eqpmt=info12
etc...
Utiliser les variables précédemment créés pour se connecter etc sur un équipement pour faire la sauvegarde du matos et d'effectuer cette action pour chaque ligne du fichier txt (une ligne correspondant à un équipement différent).
Si quelqu'un arrive à me mettre sur la voie, se serais au top.
J'espère que j'ai été assez compréhensible sinon n'hésité pas a me poser des questions.
A voir également:
- Script sauvegarde profil utilisateur
- Logiciel de sauvegarde gratuit - Guide
- Voir qui regarde mon profil facebook - Guide
- Qui regarde mon profil instagram - Guide
- Script vidéo youtube - Guide
- Sauvegarde android - Guide
3 réponses
Salut Lartishot,
Utiliser
Autrement, on peut aussi utiliser une regexp qui offre plus de contrôle, et permet de valider le format de tes lignes, par rapport à ton exemple où il doit il avoir 4 champs par lignes, comprenant du texte non vide séparé par des
La regexp en ligne 12 permet à la fois de vérifier qu'il y a bien 4 champs, séparés par 3
Si ce format n'est pas respecté, une erreur est signalée en ligne 19.
Dal
Utiliser
split(), comme proposé par Felice_, est une façon de faire appropriée car ta structure repose sur un séparateur, à savoir
:. Si tu as 4 champs, comme tu semblais le dire sur ton jeu de données d'exemple, il faudra rajouter la récupération de ce 4ème champ dans le code de Felice_
Autrement, on peut aussi utiliser une regexp qui offre plus de contrôle, et permet de valider le format de tes lignes, par rapport à ton exemple où il doit il avoir 4 champs par lignes, comprenant du texte non vide séparé par des
:avec des champs non vides.
#!/usr/bin/perl use strict; use warnings; my $fichier = "monFichier.txt"; open(my $descripteur, '<:encoding(UTF-8)', $fichier) or die "Ouverture impossible du fichier '$fichier' $!"; while (my $row = <$descripteur>) { chomp $row; if ($row =~ /^([^:]+):([^:]+):([^:]+):([^:]+)$/) { my ($ip, $port, $nom_eqpmt, $comment) = ($1, $2, $3, $4); print "J'ai récupéré ip=$ip - port=$port - ". "nom_eqpmt=$nom_eqpmt - comment=$comment\n"; # faire quelque chose avec ces données # lancer la sauvegarde, etc. } else { print "Erreur de format, ligne : $row\n"; } } print "Terminé !\n";
La regexp en ligne 12 permet à la fois de vérifier qu'il y a bien 4 champs, séparés par 3
:, que chaque champ comporte au moins un caractère, et de capturer le contenu de ces champs dans les variables $1, $2, $3, $4 dont le contenu est ensuite passé à tes variables de travail.
Si ce format n'est pas respecté, une erreur est signalée en ligne 19.
Dal
Ne reste plus que je fasse la partie du script qui permettra, pour chaque ligne récupérer, la connexion au routeur et la récupération du fichier de sauvegarde via tftp.
Si tu vas utiliser Telnet systématiquement, tu pourrais utiliser Net::Telnet, qui est plus simple.
https://metacpan.org/pod/release/JROGERS/Net-Telnet-3.04/lib/Net/Telnet.pm
https://metacpan.org/pod/release/JROGERS/Net-Telnet-3.04/lib/Net/Telnet.pm#EXAMPLES
Il faut bien paramétrer le prompt si tu veux que cela fonctionne.
Dal