Logrotate
fail2ban: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 }
該錯誤消息不是來自 shell 腳本,而是來自 logrotate。這是 logrotate 配置文件的第 11
fail2ban
行,而不是 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 }
…所以確實應該在它前面創建(並且應該將兩者之一註釋掉/刪除)。