summaryrefslogtreecommitdiffstats
path: root/rescue/grabjournallogs
blob: ef2ea4a1d33dd71a137a65bc7487b67f29929d71 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/bin/bash

if ! mountpoint -q /mnt ; then
  echo "I do not seem to see a Mageia install mounted on /mnt. You need to mount it first!" >&2
  exit 1
fi

if [ ! -f /mnt/etc/machine-id ]; then
  echo "Cannot find machine-id file (/mnt/etc/machine-id)" >&2
  exit 1
fi

MID=$(cat /mnt/etc/machine-id)
echo
echo "Found machine-id: $MID"
if [ ! -d /mnt/var/log/journal/$MID ]; then
  echo "Cannot find journal log directory (/mnt/var/log/journal/<machine-id>)" >&2
  exit 1
fi

TIMEFRAME=24
if [ -n "$1" ]; then
  NEWTIMEFRAME=$(( 0 + $1 ))
  if [ $NEWTIMEFRAME -gt 0 ]; then
    TIMEFRAME=$NEWTIMEFRAME
  fi
fi
SINCE="$(LC_ALL=c date --date=$TIMEFRAME' hours ago' +'%F %T')"
echo "Will collect logs from the last $TIMEFRAME hour(s)"
echo "  NB give numeric argument to override capture period"

TEMPFILE=$(mktemp /tmp/grabjournallogs.XXXXXX)
echo -n "Extracting logs... "
journalctl -D /mnt/var/log/journal/$MID --since "$SINCE" -o short >$TEMPFILE
echo "done"

if [ $(cat $TEMPFILE | wc -l) -lt 2 ]; then
  rm -f $TEMPFILE
  echo >&2
  echo "Cannot find any logs. Consider increasing the capture period by passing a" >&2
  echo "numeric argument larger than $TIMEFRAME." >&2
  exit 1
fi

echo -n "Compressing logs... "
cat $TEMPFILE | xz >/journallogs.xz
rm -f $TEMPFILE
echo "done"

echo
echo "Your logs have been extracted to the file 'journallogs.xz'"