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

Langage Perl Discussion :

Executer une commande (rsync)


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 67
    Par défaut Executer une commande (rsync)
    Bonjour,

    J'aimerais exécuter la commande suivante via un script Perl:

    rsync -v -e ssh xx.xxx.xxx.xxx:'"/opt/cdrmgr/reports/Weekly VoiceMail Calls_CA156_2009-04-28 00:00:00.csv"' /var/www/tablesorter/csv

    Cette commande fonctionne lorsque taper à la main dans mon serveur d'application.

    En gros c'est une commande est executer sur un serveur qui consiste a se connecter en ssh sur un autre serveur via rsync recupéré un fichier. Le fichier proprement dit est du format: Weekly VoiceMail Calls_CA156_2009-04-28 00:00:00.csv

    La partie 2009-04-28 change à toute les semaines, d'où le besoin d'utiliser une variable date.

    J'ai fait ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    my $date='%Y-%m-%d';
    my $path=''"/opt/cdrmgr/reports/Weekly VoiceMail Calls_CA156_" . $date . " 00:00:00.csv"' /var/www/tablesorter/csv';
     
    exec 'rsync -v -e ssh xx.xxx.xxx.xxx: . $path . ';
    J'ai probablement une erreur de syntaxe et je ne suis pas sûr de la façon d'utilser exec.

    Est-ce que quelqu'un pourrait me dire si je suis dans le bon chemin et si non ce qu'il faut que je corrige?

    Merci à l'avance de votre aide.

  2. #2
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    my $date= '%Y-%m-%d';
    my $path = <<"PATH";
    '"/opt/cdrmgr/reports/Weekly VoiceMail Calls_CA156_$date 00:00:00.csv"' /var/www/tablesorter/csv
    PATH
    my $Rsync = "rsync -v -e ssh xx.xxx.xxx.xxx:";
    my $cmd = $Rsync . $path;
    print "[$cmd]\n";
    system($cmd);

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 67
    Par défaut
    Merci djibril, je vais tester ça.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 67
    Par défaut
    J'ai l'erreur suivante avec le script:

    rsync: link_stat "/opt/cdrmgr/reports/Weekly VoiceMail Calls_CA156_%Y-%m-%d 00:00:00.csv" failed: No such file or directory (2)

    Il semble y avoir une erreur au niveau de la variable $date. J'ai chercher et testé différentes choses mais je ne trouve pas.

    Une idée?

    EDIT:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    use POSIX qw(strftime);
    my $date = strftime "%Y-%m-%d", localtime;
    De cette façon ça fonctionne bien.

    Merci!

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2009
    Messages : 67
    Par défaut
    Bonjour,

    Le script est fonctionnel, par contre, j'avais oublier le fait que j'ai plusieurs fichiers .csv à récupérer.

    Présentement, je récupère Weekly VoiceMail Calls_CA156_$date 00:00:00.csv. En plus de ce fichier, j'aimerais être capable de récupérer Weekly OnNet Calls_CA156_$date 00:00:00.csv et d'autres fichiers .csv qui se situe tous dans le même répertoire.

    Je pourrais recupérer tout les fichiers finissants par "_CA156_$date 00:00:00.csv" à la limite mais comme je ne les veux pas tous, il me faudrais modifier le script pour aller chercher des fichiers.csv bien précis.

    Des idées?

  6. #6
    Membre très actif Avatar de Olivier.p
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2009
    Messages : 89
    Par défaut
    Utilise les expressions régulières pour récupérer les fichiers au bon nom -> By Djibril

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

Discussions similaires

  1. Exécuter une commande avec ssh
    Par GLDavid dans le forum Réseau
    Réponses: 3
    Dernier message: 18/01/2006, 17h04
  2. [Système] executer une commande linux
    Par kirbs dans le forum Langage
    Réponses: 7
    Dernier message: 08/12/2005, 09h40
  3. Executer une commande linux distante
    Par g-rom3 dans le forum Linux
    Réponses: 11
    Dernier message: 06/11/2005, 19h33
  4. Réponses: 4
    Dernier message: 03/12/2004, 11h18
  5. [Debutant(e)][Système]Executer une commande DOS
    Par iceman dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 18/05/2004, 14h30

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