Shell
通過腳本傳輸 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
不需要轉義字元或其他東西。我忘了提供文件的完整路徑,如下面的命令。在那之後,它奏效了。
mv "/opt/access_archive/$exported_file" "/opt/access_archive/${cdate}_$exported_file"