Script de sauvegarde FTP

Résolu
Bonjour

J'essaye de faire un petit script permettant de remonter les bases sql d'un serveur linux afin de les envoyer sur un serveur FTP (j'automatiserais plus tard avec un cron)
Malheureusement je suis une taupe en script!

le voici:

#!/bin/sh

#Dump des bdd SQL
mysqldump -u glpiuser -pglpi glpidb > /home/root/backup/glpi.sql
mysqldump -u ocs -pocs ocsweb > /home/root/backup/ocs.sql
#Compression des fichiers .sql du répertoire
tar zcvf backup-'date +%A'.tar.gz *

#variable
PORT='21'
USER='INTRANET'
PASSWD='XXXXXXX'
HOST='172.17.1.212'

#Envoyer sur le NAS en FTP
ftp $HOST $PORT
$USER
$PASSWD
cd /MySQL
put /home/root/backup-'date +%A'.tar.gz

Tout se basse bien jusqu'au FTP! là ça bloque!
ça me met

root@INTRANET:/home/root/backup# ./saveftp.sh
: Aucun fichier ou dossier de ce type
: commande introuvable
glpi.sql\r
ocs.sql\r
: commande introuvable
: commande introuvable
.onnected to 172.17.1.212
220
: commande introuvable line 17: INTRANET
: commande introuvableXXXXXXXX
./saveftp.sh: ligne 19 : cd: /MySQL: Aucun fichier ou dossier de ce type
./saveftp.sh: line 20: put : commande introuvable
: commande introuvable
: commande introuvable
: commande introuvable
root@INTRANET:/home/root/backup#

à noter que je souhaite glisser dans le répertoire MySQL à la racine du serveur FTP
(La connexion marche bien depuis mon windows à partir de Filezilla)

Si les commandes sont introuvables, cque faut il mettre? x_X

Merci!

2 réponses

  1. Contributeur
    Salut,

    Quelle distrib ?
    Quel shell ?
    D'où lances-tu ton script ?
    Sous quel système l'as-tu écris ?
    $USER est une variable système, donc changer de nom ;-(
    1. Salut zipe31, merci de m'avoir répondu!

      Ubuntu 10.4 TLS
      (Shell = sh? j'y connais rien :o)
      je lance mon script de /home/root/backup
      je l'ai édité depuis vim

      Je dois utiliser quoi à la place de $USER? je pige pas trop

      Mon user sur le ftp est intranet, je devrais donc mettre quoi?

      Encore merci!
      1. Contributeur
        (Shell = sh? j'y connais rien :o)
        Tu devrais mettre "#! /bin/bash" comme shebang dans ton script, car sur Ubuntu le shell par défaut est "dash" (sh est en fait un lien symbolique qui pointe sur dash) et il y a quelques petites différences notoires ;-\

        je lance mon script de /home/root/backup
        Ok, je voulais juste être sûr que tu sois dans le même répertoire lorsque tu lances la commande "tar".

        je l'ai édité depuis vim
        Peux-tu faire un copier/coller du résultat de la commande :
        cat -A saveftp.sh


        Je dois utiliser quoi à la place de $USER? je pige pas trop

        Mon user le ftp est intranet, je devrais donc mettre quoi?

        En fait mieux vaut ne pas utiliser des variables déjà définies. Par exemple à la place tu peux mettre :
        user_ftp='INTRANET'  
        password_ftp='XXXXX'


        Est-ce que chaque ligne de ton script tapées une par une dans le terminal, marchent ?
      2. Merci beaucoup pour ton aide, je viens de rentré chez moi, je me connecte au boulot en vpn pour bosser et jte dis ça
      3. (au fait j'avais fait un chmod +x pour le rendre exécutable, pas de problème?

        ça me met après modifications des variables

        root@INTRANET:/home/root/backup# ./saveftp
        glpi.sql
        ocs.sql
        saveftp
        Connected to 172.17.1.212.
        220
        Name (172.17.1.212:root): INTRANET
        331 Please specify the password.
        Password:
        230 Login successful.
        Remote system type is UNIX.
        Using binary mode to transfer files.
        ftp> quit
        221 Goodbye.
        ./saveftp: line 15: INTRANET : commande introuvable
        ./saveftp: line 16: admingp38 : commande introuvable
        ./saveftp: ligne 17 : cd: /MySQL: Aucun fichier ou dossier de ce type
        ./saveftp: line 18: put : commande introuvable
        root@INTRANET:/home/root/backup# ls
        backup-mardi.tar.gz glpi.sql ocs.sql saveftp
        root@INTRANET:/home/root/backup#

        Les commandes fonctionnent jusqu'au FTP
        là j'ai du rentrer à la main le login et mdp après exécution du script
      4. mon fichier ressemble à ça maintenant

        #!/bin/bash
        mysqldump -u glpiuser -pglpi glpidb > /home/root/backup/glpi.sql
        mysqldump -u ocs -pocs ocsweb > /home/root/backup/ocs.sql
        #Compression des fichiers du répertoire .sql
        tar zcvf backup-'date +%A'.tar.gz *

        #variable
        PORT='21'
        user_ftp='INTRANET'
        passwd_ftp='XXXXXX'
        HOST='172.17.1.212'

        #Envoyer sur le NAS en FTP
        ftp $HOST $PORT
        $user_ftp
        $passwd_ftp
        cd /MySQL
        put /home/root/backup-'date +%A'.tar.gz
      5. et le bash -x saveftp donne:

        root@INTRANET:/home/root/backup# bash -x saveftp
        + mysqldump -u glpiuser -pglpi glpidb
        + mysqldump -u ocs -pocs ocsweb
        ++ date +%A
        + tar zcvf backup-mardi.tar.gz glpi.sql ocs.sql saveftp
        glpi.sql
        ocs.sql
        saveftp
        + PORT=21
        + user_ftp=INTRANET
        + passwd_ftp=xxxxx
        + HOST=172.17.1.212
        + ftp 172.17.1.212 21
        Connected to 172.17.1.212.
        220
        Name (172.17.1.212:root):

        A noter qu'il faudrait que j'efface après de mon répertoire /home/root/backup le backup du jour (je compte faire un cron après) et qu'il faudrait que genre tout les 5 jours j'efface les vieux backup du ftp..mais bon :D