Public bug reported:
When you switch to dateext logrotate format you get logfiles of the
format /var/log/wtmp-YYYYMMDD or /var/log/wtmp-YYYYMMDD.gz the
/etc/cron.monthly/acct script assumes logrotate will create a file named
.1 or .1.gz
This isn't necessarily the best solution, but here is one I came up
with. Uses find to find all logfiles named wtmp, wtmp-* or wtmp.[0-9]*
(this script creates a wtmp.report which would match wtmp.*), and then
uses ls and sed to get the 2nd most recent file, or it will default to
/var/log/wtmp if there isn't a 2nd most recent file. Checks the file
extension, and uses trap to remove the tempfile at the end of execution.
Switched to bash from sh
Excerpt:
LASTLOG=`find /var/log -name "wtmp" -o -name "wtmp.[0-9]*" -o -name "wtmp-*" |
xargs ls -1t | sed -n '2p'`
LASTLOG=${LASTLOG:-"/var/log/wtmp"}
EXTENSION=`echo "$LASTLOG" | cut -d'.' -f2`
if [ "$EXTENSION" == "gz" ]
then
WTMP=$(tempfile)
trap "rm -f -- '$WTMP'" EXIT
gunzip -c $LASTLOG > "${WTMP}"
else
WTMP=$LASTLOG
fi
** Affects: acct (Ubuntu)
Importance: Undecided
Status: New
** Summary changed:
- acct cronjob does not work if using dateext logrotation
+ acct cronjob does not work if using dateext in logrotate
** Description changed:
- When you switch to dateext logrotate format the /etc/cron.monthly/acct
- script assumes logrotate will create a file named .1 or .1.gz
+ When you switch to dateext logrotate format you get logfiles of the
+ format /var/log/wtmp-YYYYMMDD or /var/log/wtmp-YYYYMMDD.gz the
+ /etc/cron.monthly/acct script assumes logrotate will create a file named
+ .1 or .1.gz
This isn't necessarily the best solution, but here is one I came up
with. Uses find to find all logfiles named wtmp, wtmp-* or wtmp.[0-9]*
(this script creates a wtmp.report which would match wtmp.*), and then
uses ls and sed to get the 2nd most recent file, or it will default to
- /var/log/wtmp if there isn't a 2nd most recent file. Check the file
- extension, and use trap to remove the tempfile at the end of execution.
+ /var/log/wtmp if there isn't a 2nd most recent file. Checks the file
+ extension, and uses trap to remove the tempfile at the end of execution.
Switched to bash from sh
Excerpt:
LASTLOG=`find /var/log -name "wtmp" -o -name "wtmp.[0-9]*" -o -name "wtmp-*"
| xargs ls -1t | sed -n '2p'`
LASTLOG=${LASTLOG:-"/var/log/wtmp"}
EXTENSION=`echo "$LASTLOG" | cut -d'.' -f2`
if [ "$EXTENSION" == "gz" ]
then
- WTMP=$(tempfile)
- trap "rm -f -- '$WTMP'" EXIT
- gunzip -c $LASTLOG > "${WTMP}"
+ WTMP=$(tempfile)
+ trap "rm -f -- '$WTMP'" EXIT
+ gunzip -c $LASTLOG > "${WTMP}"
else
- WTMP=$LASTLOG
+ WTMP=$LASTLOG
fi
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1842512
Title:
acct cronjob does not work if using dateext in logrotate
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/acct/+bug/1842512/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs