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 :

Script Rsync ne fonctionne pas en Cronjob


Sujet :

Langage Perl

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 67
    Points : 52
    Points
    52
    Par défaut Script Rsync ne fonctionne pas en Cronjob
    Bonjour,

    J'ai fait un petit script qui a pour but de collecter des données sur un serveur x et les copier sur un serveur y. Lorsque je roule le script manuellement sur le serveur en l'appelant de cette façon: ./rsync.pl cela fonctionne sans problème.

    Le problème est qu'il ne fonctionne pas dans un crontab.

    Voici mon crontab:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # Mise a jour hebdo des donnees provenant du cdrmgr pour Rapport Hebdo
    50 10 * * * /var/www/Rapport/Scripts/rsync.pl
    Et voici mon script:

    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
     
    #!/usr/bin/perl -w
     
    use POSIX qw(strftime);
     
    open(FILEHANDLER,">/var/www/Rapport/Scripts/toto.txt");
    close(FILEHANDLER);
     
    my $date = strftime "%Y-%m-%d", localtime;
     
    my $path = <<"PATH";
    '"/opt/cdrmgr/reports/Hebdo_call_type_CA156_$date\_00:00:00.csv" "/opt/cdrmgr/reports/Hebdo_on_net_CA156_$date\_00:00:00.csv" "/opt/cdrmgr/reports/Hebdo_on_to_off_CA156_$date\_00:00:00.csv" "/opt/cdrmgr/reports/Hebdo_off_to_on_CA156_$date\_00:00:00.csv" "/opt/cdrmgr/reports/Hebdo_announcement_CA156_$date\_00:00:00.csv" "/opt/cdrmgr/reports/Hebdo_vm_CA156_$date\_00:00:00.csv" "/opt/cdrmgr/reports/Hebdo_call_term_causes_CA156_$date\_00:00:00.csv" "/opt/cdrmgr/reports/Hebdo_call_completion_total_CA156_$date\_00:00:00.csv" "/opt/cdrmgr/reports/Hebdo_call_completion_normal_CA156_$date\_00:00:00.csv" "/opt/cdrmgr/reports/Hebdo_call_vm_total_CA156_$date\_00:00:00.csv" "/opt/cdrmgr/reports/Hebdo_call_vm_normal_CA156_$date\_00:00:00.csv"' /var/www/Rapport/cdr
    PATH
    my $Rsync = "/usr/bin/rsync -v -e /usr/bin/ssh xx.xxx.xxx.xxx:";
    my $cmd = $Rsync . $path;
    print "[$cmd]\n";
    system($cmd);
    La partie:

    open(FILEHANDLER,">/var/www/Rapport/Scripts/toto.txt");
    close(FILEHANDLER);

    Ne sert qu'à vérifier si le cron s'execute et il s'execute bien puisque le fichier toto.txt est bien créer à chaque fois que le cron est lancé.

    Est-ce que quelqu'un aurait une idée du problème?

    Merci d'avance.

  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 : 498 771
    Points
    498 771
    Par défaut
    # Mise a jour hebdo des donnees provenant du cdrmgr pour Rapport Hebdo
    50 10 * * * perl /var/www/Rapport/Scripts/rsync.pl
    c'est mieux .

    Sinon assures toi aussi qu'il est exécutable :
    chmod +x /var/www/Rapport/Scripts/rsync.pl

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 67
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Nympheasi Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # Mise a jour hebdo des donnees provenant du cdrmgr pour Rapport Hebdo
    50 10 * * * perl /var/www/Rapport/Scripts/rsync.pl
    J'ai tester de cette fâcon aussi en rajoutant perl dans le cronjob mais ca ne fonctionne pas plus. Pour ce qui est des droit je l'ai essayer avec un chmod 777 (un peu drastique mais bon...) et ca ne fonctionne pas plus.

    c'est vraiment bizarre qu'appelé manuellement ca fonctionne et pas en crontab...

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 937
    Points : 4 358
    Points
    4 358
    Par défaut
    Citation Envoyé par Nympheasi Voir le message
    J'ai tester de cette fâcon aussi en rajoutant perl dans le cronjob mais ca ne fonctionne pas plus. Pour ce qui est des droit je l'ai essayer avec un chmod 777 (un peu drastique mais bon...) et ca ne fonctionne pas plus.

    c'est vraiment bizarre qu'appelé manuellement ca fonctionne et pas en crontab...
    si
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    my $path = <<"PATH";
    fait référence à la variable d'environnement PATH, celle-ci n'est certainement pas définie avec le mêmes valeurs sous CRON…

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

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

    Je crois que j'ai trouvé le problème.

    Les clés ssh que j'avais mise en place entre les 2 serveurs (source et destination) n'avait pas été créer avec le user root de mon serveur ubuntu. Et le cronjob que j'avais défini était dans le crontab du user root (sudo crontab -e). Donc je l'ai ecris dans le crontab du bon user.

    Autre chose j'ai modifié cette ligne pour ca fonctionne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $Rsync = "/usr/bin/rsync -v -e /usr/bin/ssh xx.xxx.xxx.xxx:";
    pour:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my $Rsync = "/usr/bin/rsync xx.xxx.xxx.xxx:";
    Merci beaucoup pour votre aide!

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 05/12/2007, 14h27
  2. [AJAX] script ajax qui fonctionne pas tout le temps
    Par krfa1 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 30/05/2007, 11h12
  3. [AJAX] Script ajax ne fonctionne pas sur IE :( !
    Par Funattitude dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 10/08/2006, 18h02
  4. Script shell ne fonctionne pas
    Par alexp dans le forum Linux
    Réponses: 7
    Dernier message: 15/06/2006, 16h41
  5. [Mail] Pb de script qui ne fonctionne pas
    Par Yael dans le forum Langage
    Réponses: 5
    Dernier message: 14/02/2006, 09h27

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