2010-10-29 32 views
1

当我手动运行它时工作正常:OS X + Crontab:你如何通过cron运行SCP?

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

但是,当cron运行时,文件永远不会被触及。我知道ssh键是正确的 - 用ssh替换scp并运行正常。

+1

我会建议指定'ssh-agent'和'ssh-add'的完整路径,就像'scp'一样。如果没有别的,这是很好的安全实践。 – 2010-10-29 04:52:42

+0

这是什么样的'scp'命令?至少有一个参数应该遵循'user @ host:path'或'host:path'模式。 – mob 2010-10-29 20:50:19

+0

我的不好,忽略了简化脚本时。 – 2010-10-30 22:51:42

回答

1

cron通常以root身份运行,您是否以root身份测试了此脚本以确保ssh密钥位于root所在的正确位置?或者你的用户档案中有你的sshkeys?

+0

我的印象是,他们以用户身份跑,但我错了!使用sudo生成密钥并推动该密钥解决问题。谢谢! – 2010-10-30 22:52:23

2

您也可以考虑使用rsync进行此过程,而不是将文件scp作为cron脚本。

0

不知道你正在运行的版本,但在雪豹cron作业运行的用户(与whoami检查您cron'd脚本)......至少,当用户当前已登录。