Logrotate

fail2ban:11 行必須以關鍵字或文件名開頭(可能在雙引號中)

  • September 28, 2017

我每天都在輪換我的 Fail2Ban 服務的日誌,但是,我每天都會收到此錯誤:

/etc/cron.daily/logrotate:
error: fail2ban:11 lines must begin with a keyword or a filename (possibly in double quotes)

這是我的/etc/cron.daily/logrotate file

#!/bin/sh

# Clean non existent log file entries from status file
cd /var/lib/logrotate
test -e status || touch status
head -1 status > status.clean
sed 's/"//g' status | while read logfile date
do
   [ -e "$logfile" ] && echo "\"$logfile\" $date"
done >> status.clean
mv status.clean status

test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf

這是我的第 11 行:

mv status.clean status

根據錯誤,此行有錯誤。我似乎不明白這行文件到底有什麼問題?

這是我的/etc/logrotate.d/fail2ban文件:

/var/log/fail2ban.log {
   monthly
   rotate 13
   compress
   delaycompress
   missingok
   notifempty
   postrotate
   fail2ban-client flushlogs 1>/dev/null
   endscript
   640 fail2ban adm
   create 640 root adm
}

該錯誤消息不是來自 shell 腳本,而是來自 logrotate。這是 logrotate 配置文件的第 11fail2ban行,而不是 cron.daily 腳本的第 11 行。

看起來您在編輯 logrotate 配置文件時出錯了;第 11 行是640 fail2ban adm- 這確實不是一個有效的東西。也許你的意思是成為create下面一行的一部分?

我檢查了執行 fail2ban 的 Debian Jessie 機器上的配置文件,它看起來像這樣:

/var/log/fail2ban.log {

   weekly
   rotate 4
   compress

   delaycompress
   missingok
   postrotate
       fail2ban-client flushlogs 1>/dev/null
   endscript

   # If fail2ban runs as non-root it still needs to have write access
   # to logfiles.
   # create 640 fail2ban adm
   create 640 root adm
}

…所以確實應該在它前面創建(並且應該將兩者之一註釋掉/刪除)。

引用自:https://unix.stackexchange.com/questions/395047