毎日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
}
答え1
エラーメッセージはシェルスクリプトではなくlogrotateから来ます。これはfail2ban
cron.dailyスクリプトの11行目ではなく、logrotate構成ファイルの11行目です。
logrotate設定ファイルを編集するときに間違いを犯したようです。行11は640 fail2ban adm
実際には有効ではありません。たぶんcreate
下の行の一部として話すのでしょうか?
fall2banを実行している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
}
...それで、実際にはその前に作成する必要があります(そしてそのうちの1つはコメントアウト/削除する必要があります)。
答え2
このエラーは、構成の11行目にエラーがあることを示します。 logrotateスクリプトの11行目ではありません。
640 fail2ban adm