Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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