2017-04-27 185 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

相关问题