Forum Programmation.shell probleme script bash et crontab

Posté par  .
Étiquettes : aucune
0
18
jan.
2006
bonjour a tous et meilleurs voeux pour 2006 :-)

je me permet de vous ecrire afin d'avoir vos lumieres Ô grands gouroux linuxiens :-D

Voila, je debute sous linux, et j'ai pour ma société installé un PC qui doit servir de server web interne (4 utilisateurs). j'ai donc installé une Mandrake 10 avec Apache, Php et Mysql et SSL. jusque la tout fonctionne super bien :). Afin de sauvegarder tout ça, j'ai créé un script bash qui fait un mysqldump et qui crée une Archive tar.gz avec ce dump et tous les fichiers du site. ensuite cette archive est renomée en monarchive.php et envoyée via ftp sur mon espace perso chez free (je renome le tar.gz en monarchive.php afin que personne ne puisse la telecharger par la suite...). Mon Script fonctionne a merveille quand je le lance "a la main" en etant loggué en tant que root.
Par contre quand j'essaye de le programmer dans la crontab de l'utilisateur root (crontab -e en etant loggué en tant que root), ça ne marche pas... ai-je oublié quelque chose ? voici ce que j'ai mis dans la crontab:

00 22 * * * /usr/bin/save.sh

merci d'avance :)
  • # .

    Posté par  . Évalué à 2.

    Au hasard comme ça : il manque peut etre une initialisation de variable d'environnement. Par exemple PATH. Et si tu n'as pas précisé /usr/bin/mysqldump ca marche peut etre pas.
    • [^] # Re: .

      Posté par  . Évalué à 1.

      tu penses que rajouter la commande

      SHELL=/bin/bash
      PATH=/sbin:/bin:/usr/sbin:/usr/bin

      en debut de script ça pourrait resoudre mon probleme ? :)
  • # et ca ?

    Posté par  . Évalué à 1.

    00 22 * * * root /usr/bin/save.sh
    • [^] # Re: et ca ?

      Posté par  (site Web personnel) . Évalué à 1.

      non, c'est la syntaxe pour le fichier /etc/crontab que tu donnes, elle inclut l'utilisateur. Mais dans l'edition du crontab personnel (crontab -e) comme elle est personnelle, forcément on mets pas l'utilisateur :)
      • [^] # Re: et ca ?

        Posté par  . Évalué à 1.

        en fait j'ai fait d'autres test, les voici:

        quand, pour tester, dans la crontab root je rajoute la ligne suivante:

        00 11 * * * reboot

        le PC reboot bien a l'heure indiquée (ce qui me fait dire que ce n'est pas un souci de programation de la crontab...)

        donc je pense que c'est un probleme au niveau de mon script de sauvegarde... le voici :

        #!/bin/sh
        SHELL=/bin/bash
        PATH=/sbin:/bin:/usr/sbin:/usr/bin
        rm site.php
        /usr/bin/mysqldump --opt --all-databases --user=root --password="pasword" > /var/www/html/site1/backup/backup.txt
        cp save.sh /var/www/html/site1/backup/save.sh
        tar cvfz site.tar.gz /var/www/html
        rm /var/www/html/site1/backup/backup.txt
        rm /var/www/html/site1/backup/save.sh
        mv site.tar.gz site.php
        ftp <<**
        open ftpperso.free.fr
        cd site1
        bin
        delete site.php
        put site.php
        bye
        **

        et dans le fichier .netrc de root j'ai ajouté ça:

        machine ftpperso.free.fr
        login user
        password monpassword

        qu'en pensez vous ? :)
  • # PROBLEME RESOLU ! ! ! :)

    Posté par  . Évalué à 1.

    voici mes tests:

    J'ai modifié la crontab afin de savoir ce qui se passait avec mon script:

    00 22 * * * /usr/bin/save.sh > /root/save.log

    et là, bizarrement ça c'est mis a marcher... la sauvegarde s'est fait sans probleme...

    du coup, j'ai fait un second test:

    dans mon script j'ai enlevé le verbose mode pour tar:

    j'ai remplacé

    tar cvfz .........

    par tar cfz .....

    et la ça marche aussi...bizarre non ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.