2010-10-29 2 views
1

Cela fonctionne bien quand je le lance à la main:OS X + Crontab: Comment lancez-vous SCP via cron?

#!/bin/bash 
eval `ssh-agent` 
ssh-add 
/usr/bin/scp [email protected]:~/file ./ 
exit 0 

Cependant, lorsque l'exécute le fichier Cron est jamais touché. Je sais que les clés ssh sont correctes - remplacez ce scp par un ssh et ça marche bien.

+1

I recommande de spécifier le chemin complet de 'ssh-agent' et' ssh-add', comme vous l'avez fait pour 'scp'. C'est une bonne pratique de sécurité, si rien d'autre. –

+0

Quel genre de commande 'scp' est-ce? Au moins un des arguments doit suivre le modèle 'user @ host: path' ou' host: path'. – mob

+0

Mon mauvais, négligé que lors de la simplification du script. –

Répondre

1

cron est généralement exécuté en tant que root, avez-vous testé ce script en tant que root pour vous assurer que les clés ssh sont dans l'emplacement correct recherché par la racine? Ou avez-vous vos sshkeys dans votre profil d'utilisateur?

+0

J'avais l'impression qu'ils couraient en tant qu'utilisateur, mais j'avais tort! Utiliser sudo pour générer la clé et pousser celle-ci a résolu le problème. Merci! –

2

Vous pouvez également utiliser rsync pour ce processus au lieu de scp le fichier en tant que script cron.

0

Je ne sais pas quelle version vous utilisez, mais dans les tâches cron Snow Leopard fonctionnent comme utilisateur (vérifier avec whoami dans votre script cron'd) ... au moins lorsque l'utilisateur est connecté.