Я пытаюсь исправить скрипт motd на моем сервере Ubuntu, который называется , /etc/update-motd.d/00-header
/etc/update-motd.d/01-sysinfo
/etc/update-motd.d/02-footer
потому что по какой-то странной причине я постоянно получаю эту странную синтаксическую ошибку, которая гласит " line 31: syntax error: unexpected end of file
", но при этом указывает на пустое место без кода, что просто сбивает с толку.
Другая проблема заключается в том, что всякий раз, когда я набираю systemctl status motd, на экране появляется следующее.
Unit motd.service could not be found.
У меня возникли проблемы с маскировкой процесса, поэтому я воспользовался решением по этой ссылке.systemctl, как размаскировать.
Я уже некоторое время борюсь с этой проблемой, но мне удалось добиться прогресса в ее решении, поэтому буду признателен за помощь.
Содержимое файла находится ниже под этим текстом.
#!/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"
решение1
" line 31: syntax error: unexpected end of file
" происходит, потому что у вас нечетное количество "парных" символов. Под "парными" символами я подразумеваю символы, которые ДОЛЖНЫ появляться с соответствующим символом, возможно, с чем-то между ними. Например, "
, '
, (
, [
, {
, и т. д. Посчитайте ваши кавычки:
files="/etc/update-motd.d/00-header /etc/update-motd.d/01-sysinfo /etc/update-motd.d/02-footer"
grep --color=always -E "\"|'|\(|\[|\{|\}|\]|\)" $files
решение2
Ошибка, по-видимому, возникла в строке 25:
25 DISTRIB_DESCRIPTION=$(lsb_release -s -d) fi
Перед - должен быть разделитель fi
- либо a ;
, либо новая строка (я бы рекомендовал последний, так как он сохраняет правильный отступ). Так что
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