Ich erhalte einen motd-Header-Syntaxfehler und brauche Hilfe beim Aktivieren von motd

Ich erhalte einen motd-Header-Syntaxfehler und brauche Hilfe beim Aktivieren von motd

Ich versuche, das motd-Skript auf meinem Ubuntu-Server zu reparieren, /etc/update-motd.d/00-header /etc/update-motd.d/01-sysinfo /etc/update-motd.d/02-footer weil ich aus unerfindlichen Gründen immer wieder diesen seltsamen Syntaxfehler erhalte, der „ line 31: syntax error: unexpected end of file“ besagt, aber auf ein leeres Feld ohne Code verweist, was einfach nur verdammt verwirrend ist.

Das andere Problem ist, dass jedes Mal, wenn ich „systemctl status motd“ eingebe, dies auf meinem Bildschirm erscheint.

Unit motd.service could not be found.

Ich hatte Probleme mit der Maskierung des Prozesses und habe daher die Lösung in diesem Link verwendetsystemctl, wie man es demaskiert.

Ich kämpfe nun schon seit einiger Zeit mit diesem Problem, aber ich mache Fortschritte bei der Lösung, daher bin ich für jede Hilfe dankbar.

Der Inhalt der Datei befindet sich weiter unten unter diesem 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 <[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"

Antwort1

Das " line 31: syntax error: unexpected end of file" entsteht, weil Sie eine ungerade Anzahl von "gepaarten" Zeichen haben. Mit "gepaarten" Zeichen meine ich Zeichen, die mit einem passenden Zeichen auftreten MÜSSEN, möglicherweise mit etwas dazwischen. Zum Beispiel , ", ', (, [, {, usw. Zählen Sie Ihre Anführungszeichen:

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

Antwort2

Der Fehler scheint in Zeile 25 zu liegen:

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

Vor dem muss ein Trennzeichen stehen fi- entweder ein a ;oder ein Zeilenumbruch (ich würde letzteres vorschlagen, da es die richtige Einrückung beibehält). Also

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

verwandte Informationen