Script de sauvegarde
Fermé
Lartishot
Messages postés
63
Date d'inscription
vendredi 17 mars 2017
Statut
Membre
Dernière intervention
11 août 2017
-
12 mai 2017 à 17:11
Lartishot Messages postés 63 Date d'inscription vendredi 17 mars 2017 Statut Membre Dernière intervention 11 août 2017 - 18 mai 2017 à 11:47
Lartishot Messages postés 63 Date d'inscription vendredi 17 mars 2017 Statut Membre Dernière intervention 11 août 2017 - 18 mai 2017 à 11:47
A voir également:
- Script sauvegarde profil utilisateur
- Script vidéo youtube - Guide
- Logiciel de sauvegarde gratuit - Guide
- Qui regarde mon profil facebook - Guide
- Qui regarde mon profil instagram - Guide
- Photo de profil - Guide
3 réponses
[Dal]
Messages postés
6203
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
29 janvier 2025
1 098
Modifié le 15 mai 2017 à 18:13
Modifié le 15 mai 2017 à 18:13
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
Modifié le 16 mai 2017 à 14:48
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.
Modifié le 16 mai 2017 à 17:09
17 mai 2017 à 10:08
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
17 mai 2017 à 15:39