通过脚本进行 crontab 和 scp 文件传输

通过脚本进行 crontab 和 scp 文件传输

我有一个脚本,可以从日志管理服务器导出日志并将这些导出发送到存档服务器。

当我手动运行此脚本时,它毫无问题地完成了任务。它下载导出并将文件发送到我的其他服务器。问题是,当我编写一个 cronjob 来自动化此工作流程时,它只是从日志管理服务器下载文件,但无法将文件发送到我的存档服务器。

脚本如下:

#!/bin/bash

/opt/splunk/bin/splunk search "(sourcetype=*) earliest=-15m" -output rawdata -maxout 0 > /opt/access_archive/archive_ALL_EXPORTS.dmp

cdate=$(date +"%Y%m%d_%H%M%S")
shopt -s extglob
exported_file=archive_ALL_EXPORTS.dmp
mv "$exported_file" "${cdate}_$exported_file"
scp ${cdate}_$exported_file root@<IP_ADDRESS>:/root

正如您在脚本中看到的,我下载了名称为 archive_ALL_EXPORTS.dmp 的 dmp 文件,并将准确的日期时间前缀添加到该文件的名称中。当我尝试使用 scp 发送此文件时,它没有执行任何操作。

crontab 如下:

* * * * * /usr/bin/bash /opt/access_archive/export.sh

我也尝试过:

* * * * * /opt/access_archive/export.sh

另外 cron 使用 bin/bash: (/etc/crontab)

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin

编辑:

我也尝试使用此脚本,以防因转义字符而出现错误,但结果是相同的。

#!/bin/bash

/opt/splunk/bin/splunk search "(sourcetype=*) earliest=-15m" -output rawdata -maxout 0 > /opt/access_archive/archive_ALL_EXPORTS.dmp

scp archive_ALL_EXPORTS.dmp root@<IP_ADDRESS>:/root

答案1

不需要转义字符或其他东西。我忘记提供文件的完整路径,如下命令所示。之后,它起作用了。

mv "/opt/access_archive/$exported_file" "/opt/access_archive/${cdate}_$exported_file"

相关内容