0

I am trying to fix the motd script on my ubuntu server called /etc/update-motd.d/00-header /etc/update-motd.d/01-sysinfo /etc/update-motd.d/02-footer because I keep on getting this strange syntax error for some strange reason that says "line 31: syntax error: unexpected end of file" yet it points to an empty space with no code which is just confusing as heck.

The other issue is that whenever I type out systemctl status motd I get this on my screen.

Unit motd.service could not be found.

I was having issues with the process being masked and so I used the solution in this link systemctl, how to unmask .

I have been battling with this issue for some time now but I am making progress in solving it so help is appreciated .

Contents of the file are down under this text.

#!/bin/sh
#
#    00-header - create the header of the MOTD Copyright (c) 2013 Nick Charlton Copyright (c)
#    2009-2010 Canonical Ltd.
#
#    Authors: Nick Charlton <hello@nickcharlton.net>
#             Dustin Kirkland <kirkland@canonical.com>
#
#    This program is free software; you can redistribute it and/or modify it under the terms
#    of the GNU General Public License as published by the Free Software Foundation; either
#    version 2 of the License, or (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
#    without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#    See the GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License along with this
#    program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
#    Floor, Boston, MA 02110-1301 USA.

[ -r /etc/lsb-release ] && . /etc/lsb-release

if [ -z "$DISTRIB_DESCRIPTION" ] && [ -x /usr/bin/lsb_release ]; then
        # Fall back to using the very slow lsb_release utility
        DISTRIB_DESCRIPTION=$(lsb_release -s -d) fi

figlet $(Ourserver) printf "\n"
printf "Welcome to %s (%s).n" "$DISTRIB_DESCRIPTION" "$(uname -r)" printf "\n"

2 Answers2

0

The "line 31: syntax error: unexpected end of file" happens because you have an odd number of "paired" characters. By "paired" characters, I mean characters that MUST appear with amatching character, possibly with stuff in between. For example, ", ', (, [, {, etc. Count your quotes:

files="/etc/update-motd.d/00-header /etc/update-motd.d/01-sysinfo /etc/update-motd.d/02-footer"
grep --color=always -E "\"|'|\(|\[|\{|\}|\]|\)" $files
waltinator
  • 36,399
0

The error appears to originate in line 25:

25          DISTRIB_DESCRIPTION=$(lsb_release -s -d) fi

There needs to be a separator before the fi - either a ; or a newline (I'd suggest the latter since it preserves proper indentation). So

23  if [ -z "$DISTRIB_DESCRIPTION" ] && [ -x /usr/bin/lsb_release ]; then
24          # Fall back to using the very slow lsb_release utility
25          DISTRIB_DESCRIPTION=$(lsb_release -s -d)
26  fi
steeldriver
  • 136,215
  • 21
  • 243
  • 336