Recibo un error de sintaxis del encabezado motd y necesito ayuda para habilitar motd

Recibo un error de sintaxis del encabezado motd y necesito ayuda para habilitar motd

Estoy tratando de arreglar el script motd en mi servidor Ubuntu llamado /etc/update-motd.d/00-header /etc/update-motd.d/01-sysinfo /etc/update-motd.d/02-footer porque sigo recibiendo este extraño error de sintaxis por alguna extraña razón que dice " line 31: syntax error: unexpected end of file" pero apunta a un espacio vacío sin código, lo cual es muy confuso.

El otro problema es que cada vez que escribo systemctl status motd aparece esto en mi pantalla.

Unit motd.service could not be found.

Estaba teniendo problemas con el proceso enmascarado y por eso utilicé la solución en este enlace.systemctl, cómo desenmascarar.

He estado luchando con este problema desde hace algún tiempo, pero estoy progresando en su solución, por lo que agradezco su ayuda.

El contenido del archivo se encuentra debajo de este texto.

#!/bin/sh
#
#    00-header - create the header of the MOTD Copyright (c) 2013 Nick Charlton Copyright (c)
#    2009-2010 Canonical Ltd.
#
#    Authors: Nick Charlton <[email protected]>
#             Dustin Kirkland <[email protected]>
#
#    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"

Respuesta1

El " line 31: syntax error: unexpected end of file" ocurre porque tienes un número impar de caracteres "emparejados". Por personajes "emparejados", me refiero a personajes que DEBEN aparecer con un carácter coincidente, posiblemente con cosas intermedias. Por ejemplo, ", ', (, [, {etc. Cuente sus citas:

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

Respuesta2

El error parece originarse en la línea 25:

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

Es necesario que haya un separador antes de fi- ya sea a ;o una nueva línea (sugeriría este último ya que conserva la sangría adecuada). Entonces

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

información relacionada