2010-10-29 48 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腳本)......至少,當用戶當前已登錄。