Avoid running grep
[mythtv-status.git] / bin / mythtv-update-motd
1 #!/bin/sh
2 # Copyright (c) 2007-2019 Andrew Ruthven <andrew@etc.gen.nz>
3 # This code is hereby licensed for public consumption under the GNU GPL v3.
4 #
5 # You should have received a copy of the GNU General Public License along
6 # with this program; if not, write to the Free Software Foundation, Inc.,
7 # 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
8 #
9 # Run mythtv-status to update the MOTD.
10
11 NAME=mythtv-update-motd
12
13 # Debian style
14 [ -r /etc/default/mythtv-status ] && . /etc/default/mythtv-status
15 # Fedora style
16 [ -r /etc/sysconfig/mythtv-status ] && . /etc/sysconfig/mythtv-status
17
18 # Support the old RUN variable
19 [ x$UPDATE_MOTD = x ] && UPDATE_MOTD=$RUN
20
21 if [ x$UPDATE_MOTD != xyes -o -f /var/lib/mythtv-status/motd_update_disabled ]
22 then
23   exit
24 fi
25
26 WORKFILE=/run/motd
27 TEMPFILE=/run/motd.mythtv-status
28
29 if [ -d /etc/update-motd.d ]
30 then
31   # We want to generate file which only contains the MythTV Status
32   # as a snippet in /etc/update-motd.d will cat this file.
33   #
34   # Current (as of 2019-01-1) Debian and Ubuntu releases use this
35   # method.
36
37   WORKFILE=/run/motd.mythtv-status
38   TEMPFILE=${WORKFILE}.new
39 else
40   # We are going to generate an motd file to be used for the system,
41   # with the previous content first, then the MythTV Status.
42
43   STUBFILE=/run/motd.orig
44
45   if [ -f /etc/os-release ]
46   then
47     DISTRO=$(awk -F= '$1 == "ID" { print $2 }' /etc/os-release)
48   else
49     DISTRO='unknown'
50   fi
51
52   if [ $DISTRO = 'fedora' ]
53   then
54     WORKFILE=/etc/motd
55     STUBFILE=/etc/motd.stub
56     TEMPFILE=/etc/motd.mythtv-status
57   fi
58
59   # Just incase someone has removed their motd file.
60   [ -f $WORKFILE ] || touch $WORKFILE
61   # Keep the original content around.
62   [ -f $STUBFILE ] || cp $WORKFILE $STUBFILE
63
64   # If the tempfile is less than 15 minutes old, object, otherwise
65   # we'll assume that something went wrong and remove it.
66   if [ -f $TEMPFILE ]; then
67       AGE=$(stat -c "%Z" $TEMPFILE);
68     if (( $AGE > $(date +'%s') - 900 ))
69     then
70         echo "I think another $NAME is running."
71         exit 1
72     fi
73   fi
74
75   # Have whatever the system motd contains before the MythTV content
76   cp $STUBFILE $TEMPFILE
77 fi
78
79 # Support the old ARGS variable
80 [ x$UPDATE_MOTD_ARGS = x ] && UPDATE_MOTD_ARGS=$ARGS
81
82 ret=0
83 mythtv-status $UPDATE_MOTD_ARGS -h $HOST >> $TEMPFILE || ret=$?
84 if [ $ret -eq 0 -o $ret -eq 1 ]; then
85   if [ ! -f $TEMPFILE ]; then
86     echo My temporary file has gone away, failed.
87     exit 1
88   else
89     mv $TEMPFILE $WORKFILE
90   fi
91 else
92   # Something else went wrong, remove the temp file.
93   rm $TEMPFILE
94   exit 1
95 fi
96
97 # Local Variables:
98 # sh-basic-offset: 2
99 # End: