SCP不在crontab中工作,但在命令行上工作
经过大量研究,我找不到解决方案,但发布了这个问题。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
它什么都不做。
我几乎已经想尽答案发现相关的问题。答案是偶然发生的。
我输入了用户名,而不是根,它的工作。我不知道如何,但它的工作。希望这会帮助像我这样的人。
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
为什么不尝试将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的环境不同。 希望这有助于。
第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文件。
在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
我曾试过全路径。还是行不通。 – tapaljor
到这里看看:https://askubuntu.com/questions/23009/reasons-why-crontab-does-not-work – ceving