failure2ban:11行はキーワードまたはファイル名で始まる必要があります(二重引用符を使用可能)。

failure2ban:11行はキーワードまたはファイル名で始まる必要があります(二重引用符を使用可能)。

毎日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から来ます。これはfail2bancron.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

関連情報