027e6bb2d189e965833f89ec7181ee756dd66b85
[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   WORKFILE=/run/motd.mythtv-status
35   TEMPFILE=${WORKFILE}.new
36 else
37   # We are going to generate an motd file to be used for the system,
38   # with the previous content first, then the MythTV Status.
39
40   STUBFILE=/run/motd.orig
41
42   if [ -f /etc/os-release ]
43   then
44     DISTRO=$(grep ^ID= /etc/os-release | awk -F= '{ print $2 }')
45   else
46     DISTRO='unknown'
47   fi
48
49   if [ $DISTRO = 'debian' ]
50   then
51     # Debian Wheezy+ handles the MOTD differently.
52     [ -f /run/motd.dynamic ] && WORKFILE=/run/motd.dynamic
53   elif [ $DISTRO eq 'fedora' ]
54   then
55     WORKFILE=/etc/motd
56     STUBFILE=/etc/motd.stub
57     TEMPFILE=/etc/motd.mythtv-status
58   fi
59
60   # Just incase someone has removed their motd file.
61   [ -f $WORKFILE ] || touch $WORKFILE
62   # Keep the original content around.
63   [ -f $STUBFILE ] || cp $WORKFILE $STUBFILE
64
65   # If the tempfile is less than 15 minutes old, object, otherwise
66   # we'll assume that something went wrong and remove it.
67   if [ -f $TEMPFILE ]; then
68       AGE=$(stat -c "%Z" $TEMPFILE);
69     if (( $AGE > $(date +'%s') - 900 ))
70     then
71         echo "I think another $NAME is running."
72         exit 1
73     fi
74   fi
75
76   # Have whatever the system motd contains before the MythTV content
77   cp $STUBFILE $TEMPFILE
78 fi
79
80 # Support the old ARGS variable
81 [ x$UPDATE_MOTD_ARGS = x ] && UPDATE_MOTD_ARGS=$ARGS
82
83 ret=0
84 mythtv-status $UPDATE_MOTD_ARGS -h $HOST >> $TEMPFILE || ret=$?
85 if [ $ret -eq 0 -o $ret -eq 1 ]; then
86   if [ ! -f $TEMPFILE ]; then
87     echo My temporary file has gone away, failed.
88     exit 1
89   else
90     mv $TEMPFILE $WORKFILE
91   fi
92 else
93   # Something else went wrong, remove the temp file.
94   rm $TEMPFILE
95   exit 1
96 fi
97
98 # Local Variables:
99 # sh-basic-offset: 2
100 # End: