IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation et administration système Perl Discussion :

Script de sauvegarde avec la date - Problème de caractères


Sujet :

Programmation et administration système Perl

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2011
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 40
    Points : 18
    Points
    18
    Par défaut Script de sauvegarde avec la date - Problème de caractères
    Bonjour à vous, je suis nouveau sur ce forum et j'ai un petit soucis avec Perl et les dates.

    Déjà, voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #!/usr/bin/perl -w
    use strict;
    use Archive::Tar;
    #use Mojolicious::Plugin::Mail;
    use File::Copy;
     
    #On indique le chemin des fichier de conf
     
    my $vsftpdconfig = "/etc/vsftpd.conf";
    my $sshconfig = "/etc/ssh/ssh_config";
    my $transmissionconfig = "/etc/transmission-daemon/settings.json";
    my $networkconfig = "/etc/network/interfaces";
    my $apache2config = "/etc/apache2/apache2.conf";
    my $date = localtime;
    my $nomRep = "SaveConf_$date";
    my $saveTar = Archive::Tar -> new;
     
    #On change de repertoire et on créer le dossier des fichiers à sauvegarder
    chdir('/etc/') or die ("Erreur lors du changement de repertoire");
    mkdir($nomRep,0755) or die ("Erreur lors de la creation du repertoire");
    chdir($nomRep) or die ("Erreur lors du changement de repertoire");
     
     
    copy ($vsftpdconfig, "vsftpd.conf");
    copy ($sshconfig, "ssh_config");
    copy ($transmissionconfig, "settings.json");
    copy ($networkconfig, "interfaces");
    copy ($apache2config, "apache2.conf");
     
    $saveTar -> add_files('vsftpd.conf', 'ssh_config', 'settings.json', 'interfaces', 'apache2.conf');
    $saveTar -> rename($nomRep);
    $saveTar -> write($nomRep.".tar");
    Le problème, ici, concerne le localtime. Cette fonction me donne une date en HH:MM:SS. Le soucis c'est que sous Windaz, les ":" sont pas acceptés. Auriez-vous une idée pour remplacer ces ":" par des "-" ou des "_". Ou existe-t-il un format date avec des "-".

    Voilà, merci de vos futures réponses. =)

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Bienvenue sur ce forum,

    localtime ne te donne que des secondes . Sinon, tu peux utiliser cette procédure disponible dans la FAQ afin avoir une date au format que tu souhaites.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #!/usr/bin/perl
    use warnings;
    use strict;
    use Archive::Tar;
    use File::Copy;
     
    #use Mojolicious::Plugin::Mail;
     
    #On indique le chemin des fichier de conf
     
    my $vsftpdconfig       = "/etc/vsftpd.conf";
    my $sshconfig          = "/etc/ssh/ssh_config";
    my $transmissionconfig = "/etc/transmission-daemon/settings.json";
    my $networkconfig      = "/etc/network/interfaces";
    my $apache2config      = "/etc/apache2/apache2.conf";
    my $date               = date()->{'date'};
    my $nomRep             = "SaveConf_$date";
    my $saveTar            = Archive::Tar->new;
     
    #On change de repertoire et on créer le dossier des fichiers à sauvegarder
    chdir('/etc/') or die("Erreur lors du changement de repertoire");
    mkdir( $nomRep, 0755 ) or die("Erreur lors de la creation du repertoire");
    chdir($nomRep) or die("Erreur lors du changement de repertoire");
     
    copy( $vsftpdconfig,       "vsftpd.conf" );
    copy( $sshconfig,          "ssh_config" );
    copy( $transmissionconfig, "settings.json" );
    copy( $networkconfig,      "interfaces" );
    copy( $apache2config,      "apache2.conf" );
     
    $saveTar->add_files( 'vsftpd.conf', 'ssh_config', 'settings.json', 'interfaces', 'apache2.conf' );
    $saveTar->rename($nomRep);
    $saveTar->write( $nomRep . ".tar" );
     
    sub date {
      my $time = shift || time;    #$time par defaut vaut le time actuel
      my ( $seconde, $minute, $heure, $jour, $mois, $annee, $jour_semaine, $jour_annee, $heure_hiver_ou_ete )
        = localtime($time);
      $mois  += 1;
      $annee += 1900;
     
      # On rajoute 0 si le chiffre est compris entre 1 et 9
      foreach ( $seconde, $minute, $heure, $jour, $mois, $annee ) {
        s/^(\d)$/0$1/;
      }
     
      my %date = (
        "date"         => "$jour-$mois-$annee",
        "heure"        => "$heure:$minute:$seconde",
        "jour_semaine" => $jour_semaine,
        "jour_annee"   => $jour_annee,
        "hiverOuEte"   => $heure_hiver_ou_ete,
      );
      return \%date;
    }
    Voilà !

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2011
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    POSIX
    exemple 1
    use POSIX qw(strftime);
    my $now_string = strftime "%a %b %e %H:%M:%S %Y", localtime;
    Je peux aussi utiliser ça nan ? Ca me donne un format de date as you want que tu peux concaténer avec un autre string.

    Tu en penses quoi ?

    Et merci de ta première réponse =)

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2011
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Je dis pas que ta réponse est mauvaise hein^^. Je te proposais juste une solution que j'ai trouvée.

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    En perl, il existe toujours plusieurs façons de faire. Si ta solution te convient, c'est l'essentiel car elle est aussi bien .

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2011
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    Ca Marche. Merci pour ton coup de main
    Je te remercie
    Bonne continuation

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Pense à mettre ta discussion en

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2011
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Décembre 2011
    Messages : 40
    Points : 18
    Points
    18
    Par défaut
    J'ai trouver une autre solution.
    J'utilise les expressions régulières (qui font peur à première vue^^).

    Pour remplacer un caractère comme le : en - , on fait:

    le g c'est pour appliquer la fonction à tout les caractères : , sinon cela s'arrête au premier.

    Encore Merci et je passe en résolut

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/06/2015, 09h55
  2. Réponses: 7
    Dernier message: 24/10/2011, 21h49
  3. Script pour zipper avec Winzip +date
    Par PAB/31/SAB dans le forum VBScript
    Réponses: 2
    Dernier message: 08/06/2011, 14h19
  4. Réponses: 4
    Dernier message: 12/06/2009, 10h40
  5. Script de sauvegarde avec mise en place de l'ARCHIVELOG
    Par phil4444 dans le forum Administration
    Réponses: 4
    Dernier message: 24/04/2008, 17h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo