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