如何传入日志文件创建以传入脚本以附加文件

如何传入日志文件创建以传入脚本以附加文件

我运行了几个 cron 作业来备份数据库:

0 8 * * * BACKUP=DEV DB=01 /usr/local/bin/backup.sh > /var/log/backup-db01-`date "+\%m\%d\%y"`.log 2>&1||/usr/local/bin/create-ticket.sh

0 16 * * * BACKUP=DEV DB=02 /usr/local/bin/backup.sh > /var/log/backup-db02-`date "+\%m\%d\%y"`.log 2>&1||/usr/local/bin/create-ticket.sh

在脚本中,我尝试在失败时创建 JIRA 票证并附加备份日志:

创建ticket.sh脚本:

#create Ticket for failed backup#
JIRA=`/opt/atlassian-cli/jira.sh --server https://blahblah --user admin --password blahblah --action createIssue --project "DEV" --type "Incident" --summary "Failed backup on $BACKUP $DB" --components "blah" --priority "Major"| awk '{print $2}'`

###Atttach logs:###
/opt/atlassian-cli/jira.sh --server https://blahblah --user admin --password blahblah --action addAttachment --issue "${JIRA}" --file "?????"

我需要知道如何在每次 cron 运行到 { --file "???"} 部分时传递不同的文件名...文件名每天都会变化,我需要脚本每天为每个数据库选取新创建的文件失败。

答案1

制作一个包装脚本来清理你的 crontab;

0 8 * * * /usr/local/bin/backupOrTicket.sh 01

把这个放进去;

DB=$1
BACKUP=DEV
FILE="/var/log/backup-$DB-$(date +%m%d%y).log"
/usr/local/bin/backup.sh > "$FILE" 2>&1 \
|| /usr/local/bin/create-ticket.sh "$FILE"

--file "$1"在 create-ticket.sh 中使用。如果实际未使用 BACKUP 变量,您可能需要将其删除。您还应该使用date --iso-8601=s以便您的日志文件正确排序。 (使用除数字最大到最小以外的任何日期格式都是反模式

答案2

我认为您可以引入日志文件名参数用于重定向和调用 create-ticket.sh 时

0 8 * * * BACKUP=DEV DB=01 LOG=/var/log/backup-db01-$(date "+%m%d%y").log /usr/local/bin/backup.sh > $LOG 2>&1 || /usr/local/bin/create-ticket.sh $LOG

所以 create-ticked.sh 应该期望该参数,并且您可以在内部使用它,例如

 ... --file "$1" ...

您可能不想使用转义 % 符号 - $(date "+%m%d%y") - 部分会产生像 021318 这样的字符串一次,所以您保证坚持使用相同的名称。

相关内容