#1 Le 03/08/2014, à 08:25
- Tomzz
[Résolu/contourné] test d'exécution correcte de lftp
Bonjour,
Après quelques déboires résolus dans un autre post je cherche à faire un contrôle de la bonne exécution d'une commande lftp dans un script lancé par cron.
Au départ, je faisais simplement:
lftp ftp://${ftpus}:${ftpmdp}@${ftpserv} -e "mirror -e -x blog / ${rept}/catalogue/ ; quit" && transfert="OK"
et un test sur la variable transfert faisait se que je voulais.
Mais pour que cela marche avec cron, j'ai du changer ma commande en ça:
lftp ftp://${ftpus}:${ftpmdp}@${ftpserv} << EOF
mirror -e -x blog / ${rept}/catalogue/
quit 0
EOF
Et là, plus moyen de placer mon && transfert="OK
J'ai tenté d'utiliser $? mais sa valeur est toujours 0
J'ai aussi essayé un fichier log, de cette façon:
lftp ftp://${ftpus}:${ftpmdp}@${ftpserv} << EOF
mirror --verbose=1 --log=/tmp/loglftp -e -x blog / ${rept}/catalogue/
quit 0
EOF
Mais celui-ci ne contient que les modifications effectués, si le site est déjà a jour, ou si j'ai une erreur de connexion ou si le transfert est interrompus j'obtient un fichier vide dans tous les cas.
J'ai besoin d'un test me disant que la commande lftp est bien exécuté et quelle est arrivée à sont terme.
Une idée ?
Dernière modification par Tomzz (Le 04/08/2014, à 00:24)
Hors ligne
#2 Le 04/08/2014, à 00:24
- Tomzz
Re : [Résolu/contourné] test d'exécution correcte de lftp
Bonsoir,
Bon, problème résolu par contournement.
[Édit] changé l'ordre des commandes pour vérifier le succès de la synchro et pas seulement celui de la connexion.
Je crée un fichier de test avec la date unix en local.
Je synchronise.
Je le dépose sur le serveur après la synchro.
Je récupère le fichier de test sur le serveur.
Le tout dans la même session lftp.
Je vérifie si le fichier local contient la même date unix en seconde que celui fraîchement récupéré sur le serveur.
Ce qui donne:
## On crée un fichier de test
date +%s > "${rept1}/pro-check.txt"
## Synchronisation du PC lors du démarrage
lftp ftp://${ftpus}:${ftpmdp}@${ftpserv} << EOF
rm ${rept}/catalogue/protege/pro-check.txt
mirror -e -x blog /js/ ${rept}/catalogue/js
put -O /protege ${rept1}/pro-check.txt
get1 -o ${rept}/catalogue/protege/pro-check.txt /protege/pro-check.txt
quit 0
EOF
if [ "$(cat ${rept}/catalogue/protege/pro-check.txt)" == "$(cat ${rept1}/pro-check.txt)" ]; then
{
transfert="OK"
rm -f "${rept1}/pro-check.txt"
}
fi
Dernière modification par Tomzz (Le 04/08/2014, à 11:59)
Hors ligne