2017-04-27 231 views
0

經過大量研究,我找不到解決方案,但發佈了這個問題。SCP不在crontab中工作,但在命令行上工作

我有一臺電腦A和B都是Ubuntu桌面。我想將文件從A複製到B.我遵循的步驟。

1. ssh-keygen in computer A 
2. Left password blank 
3. Copied id_rsa.pub to computer B ~/.ssh/ from computer A 
4. Renamed id_rsa.pub to authorized_keys in computer B 
5. In computer A I did scp -i ~/.ssh/id_rsa -r /var/www/abc [email protected]:/home/abc/ 

如果我在命令行中執行第4步,它的工作正常。但是當我在crontab中做同樣的事情時

22 10 * * * root scp -i ~/.ssh/id_rsa -r /var/www/abc [email protected]:/home/abc 

它什麼都不做。

+0

到這裏看看:https://askubuntu.com/questions/23009/reasons-why-crontab-does-not-work – ceving

回答

0

我幾乎已經想盡答案發現相關的問題。答案是偶然發生的。

我輸入了用戶名,而不是根,它的工作。我不知道如何,但它的工作。希望這會幫助像我這樣的人。

2 10 * * * root /usr/bin/scp -i /home/username/.ssh/id_rsa -r /var/www/abc [email protected]:/home/abc 

2 10 * * * username /usr/bin/scp -i /home/username/.ssh/id_rsa -r /var/www/abc [email protected]:/home/abc 
0

爲什麼不嘗試將scp命令放入bash腳本中,並將bash腳本放入cron中,還請記住將shbang放入sh腳本中,如下所示:#!/bin/bash(通常是路徑,通過在shell中輸入bash來確認)。另外chmod a + x你的sh腳本使它成爲可執行文件,並且將bash中的sh腳本命名爲./script.sh,然後將它放在crontab中。

爲什麼scp命令在crontab中不起作用? 以下崗位做得很好,解釋各種不同的問題,cron作業一個面孔 - https://askubuntu.com/questions/23009/reasons-why-crontab-does-not-work

你的情況,這是一個環境問題。 Crontab的環境與bash的環境不同。 希望這有助於。

0

第5步不起作用,也許第3步和第4步不能正常工作。

3. Copied id_rsa.pub to computer B ~/.ssh/ from computer A 
4. Renamed id_rsa.pub to authorized_keys in computer B 

您應該使用命令「ssh-copy-id」複製.pub文件。

+0

我想上的另一個區域的步驟和工作。當我在兩臺Ubuntu桌面電腦上嘗試時,它沒有奏效。 – tapaljor

+0

命令「ssh-copy-id」是否在兩臺ubuntu臺式機上工作? – signjing

+0

是的ssh-copy-id不起作用。它說主機名稱沒有解決。 – tapaljor

0

在crontab中,您只需執行命令行,而沒有交互式shell的所有好處,即填充的PATH變量以及所有其他bash技巧,如~解釋(不確定是否爲最後一個)。

所以規則是始終使用crontab中完整路徑:

22 10 * * * root /usr/bin/scp -i /home/username/.ssh/id_rsa -r /var/www/abc [email protected]:/home/abc 
+0

我曾試過全路徑。還是行不通。 – tapaljor

相關問題