cron 作业中的 SFTP

cron 作业中的 SFTP

问题

  1. 我想通过 SFTP 自动下载文件
  2. 我设置了一个 SFTP 服务器和一个密钥机制
  3. 我创建了一个简单的 bash 脚本 -脚本
  4. 我在 cron 中添加了脚本条目

剧本,脚本

#!/bin/bash  
sftp user@server:/home/user/file.txt  
exit 0

手动执行脚本可以正常工作(文本文件保存在主目录中),但添加脚本(具有适当的权限)crontab不执行任何操作。

crontab 条目:

* * * * * /home/user/script.sh

为了进行身份验证,我曾经ssh-keygen创建了一组密钥(私钥、公钥)并设置了与 SFTP 服务器的交叉身份验证。

对于脚本自动化,我使用keychain无密码身份验证。

现在

目前,我有一个名为脚本位于“用户”主目录(/home/user/)。

手动运行时root,脚本从 SFTP 服务器获取文件,并将其放置在 中/home/user/

从作业运行时不会执行此操作cron。在 中cronsftp命令出错。

有想法吗?

正在努力

  1. 改变变量/etc/crontab没有解决问题
  2. 说明完整路径脚本没有解决问题
  3. 声明小路变量脚本没有解决问题
  4. 我从命令中发现了错误sftp- 它是255

但是手动执行脚本(./script.sh)仍然可以完美运行......

答案1

一个工作示例:

一个名为的简单脚本hello.sh,将单词 hello 附加到文本文件中(每个命令使用完整路径):

笔记 myuser是你的用户名

#!/bin/bash
printf 'hello' >> /home/myuser/hello.txt

使用以下命令使脚本可执行chmod +x hello.sh

您可以根据需要更改每分钟运行的 crontab 条目:

* * * * * /home/myuser/hello.sh

一些细节:

  • 每个 cron 任务都以注册它的用户身份运行。如果 root 用户注册了一个 cron 任务,则该任务将以 root 权限运行。

  • 如果非 root 用户注册了一个 cron 作业,则该作业将使用上述用户的权限运行;如果该作业需要 root 权限,则它将失败,因为它是由非 root 用户启动的......

  • 最好使用完整路径调用命令和脚本,以确保 cron 能够正确找到并调用它们,否则它可能会失败而没有有用的反馈。

相关内容