То, как делают я использую, раскрашивает MOTD?

Я думаю source мог бы быть наилучший вариант здесь. Вот пример:

cat << EOF > foo
touch $1
chmod +x $1
rehash
EOF

Выполниться foo как это:

source foo bar

Если это было в Вашем пути, bar теперь completable.

17
26.06.2014, 02:28
2 ответа

Предположим, что вы находитесь на Ubuntu - которая использует тире для выполнения системных скриптов:

Этот файл, /etc/update-motd.d/00-header, выполняется /bin/dash, (не /bin/bash), что довольно минималистично (и быстро) -
. в этом месте, похоже, не поддерживается "\e" - вместо этого используйте "\033".

Другое дело, когда нужно расширить экранирующие коды.

.
11
27.01.2020, 19:47

В Debian/Ubuntu motdнастраивается в/etc/pam.d/sshd:

session    optional     pam_motd.so  motd=/run/motd.dynamic
session    optional     pam_motd.so noupdate

, что означает, что после успешного входа в систему система запустит что-то вроде:

cat /run/motd.dynamic
if [[ -f /etc/motd ]]; then cat /etc/motd; fi

где /etc/motd— статическая часть (, только напечатанная, без источника ).

Дебиан 9 / Убунту 16.04:

Для генерации динамической части run-partsиспользуется для каталога /etc/update-motd.d:

/usr/bin/env -i PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin run-parts --lsbsysinit /etc/update-motd.d

Для более читаемого кода вы можете использовать tput setaf {color number}. Обратите внимание, что для сохранения цветов мы должны установить переменную TERM.

#!/bin/sh
export TERM=xterm-256color

read one five fifteen rest < /proc/loadavg
echo "$(tput setaf 2)
Kernel: `uname -v | awk -v OFS=' ' '{print $4, $5}'`
$(tput setaf 4)Load Averages......: ${one}, ${five}, ${fifteen} (1, 5, 15 min)
$(tput setaf 5)
 ______________
< Hello World! >
 --------------
        \\   ^__^
         \\  (oo)\\_______
            (__)\\       )\\\/\\
                ||----w |
                ||     ||

$(tput sgr0)"

сохранить файл, например, как./etc/update-motd.d/10-uname

и убедитесь, что он исполняемый:

chmod +x /etc/update-motd.d/10-uname

Основные цвета пронумерованы:

  • 1 – Красный
  • 2 – Зеленый
  • 3 – Желтый
  • 4 – Синий
  • 5 – Пурпурный
  • 6 – голубой
  • 7 – Белый

Приведенный выше код генерирует :bash colored motd

В зависимости от вашего вкуса вы можете сделать вывод более красочным, используя lolcatили заголовки из figlet. Сгенерированный вывод использует стандартный синтаксис bash :

.
^[(B^[[m
^[[32m
Kernel: 4.9.65-3+deb9u2 (2018-01-04)
^[[34mLoad Averages......: 0.04, 0.05, 0.05 (1, 5, 15 min)
^[[35m
 ______________
< Hello World! >
 --------------
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

^[(B^[[m

Дебиан 8/Убунту 14.04

Динамическая часть обновляется с помощью /etc/init.d/motd start, которая выполняется в соответствии с:

uname -snrvm > /var/run/motd.dynamic
7
27.01.2020, 19:47

Теги

Похожие вопросы