当我手动运行它时工作正常:OS X + Crontab:你如何通过cron运行SCP?
#!/bin/bash
eval `ssh-agent`
ssh-add
/usr/bin/scp [email protected]:~/file ./
exit 0
但是,当cron运行时,文件永远不会被触及。我知道ssh键是正确的 - 用ssh
替换scp
并运行正常。
当我手动运行它时工作正常:OS X + Crontab:你如何通过cron运行SCP?
#!/bin/bash
eval `ssh-agent`
ssh-add
/usr/bin/scp [email protected]:~/file ./
exit 0
但是,当cron运行时,文件永远不会被触及。我知道ssh键是正确的 - 用ssh
替换scp
并运行正常。
cron通常以root身份运行,您是否以root身份测试了此脚本以确保ssh密钥位于root所在的正确位置?或者你的用户档案中有你的sshkeys?
我的印象是,他们以用户身份跑,但我错了!使用sudo生成密钥并推动该密钥解决问题。谢谢! – 2010-10-30 22:52:23
您也可以考虑使用rsync进行此过程,而不是将文件scp作为cron脚本。
不知道你正在运行的版本,但在雪豹cron作业运行的用户(与whoami
检查您cron'd脚本)......至少,当用户当前已登录。
我会建议指定'ssh-agent'和'ssh-add'的完整路径,就像'scp'一样。如果没有别的,这是很好的安全实践。 – 2010-10-29 04:52:42
这是什么样的'scp'命令?至少有一个参数应该遵循'user @ host:path'或'host:path'模式。 – mob 2010-10-29 20:50:19
我的不好,忽略了简化脚本时。 – 2010-10-30 22:51:42