Можно ли поместить команды в /etc/motd?

Могу ли я поместить команды оболочки в /etc/motd файл баннера для входа? Я пытался:

 $(uptime)

а также

`uptime`

Это возможно?

5 ответов

Решение

/etc/motd только для чтения и не выполняется, так что с технической точки зрения вы не можете помещать туда команды оболочки.

Однако можно выполнить сценарий оболочки во время входа в систему, который будет иметь тот же результат. Обычно это достигается путем адаптации /etc/profile сценарий, который выполняется каждый раз, когда пользователь входит в систему. Полезная практика - поместить команду, которую вы хотите выполнить, в сценарий с именем /etc/motd.sh и вызвать этот скрипт из /etc/profileобычно в конце.

На серверах Ubuntu есть программа под названием update-motd из пакета libpam-modules:

Системные администраторы UNIX/Linux часто передают важную информацию консольным и удаленным пользователям, сохраняя текст в файле / etc / motd, который отображается модулем pam_motd(8) при входе в интерактивную оболочку.

Традиционно этот файл представляет собой статический текст, обычно устанавливаемый дистрибутивом и обновляемый только при обновлении выпуска, или перезаписываемый локальным администратором соответствующей информацией.

Ubuntu представила инфраструктуру update-motd, с помощью которой motd(5) динамически собирается из набора скриптов при входе в систему.

Эта коллекция сценариев живет под /etc/update-motd.d/, Для получения дополнительной информации см. Эту страницу вики.

Еще одна альтернатива генерации /etc/motd вместо того, чтобы запускать скрипт при входе в систему, нужно иметь задание cron. Конечно, это не то же самое, но я встречал этот подход иногда в прошлом.

Да, это возможно... Сорта.

Посмотрите на создание динамического MOTD. Это сокращенная форма этого документированного процесса.

Для серверов Centos 7 я предлагаю использовать свой порт update-motd.d из Ubuntu.

В отличие от других решений, он заставляет динамический MOTD показывать только один раз, когда вы SSH / входите в систему через консоль (в других решениях он отображается, когда вы открываете новый screen окна, например).

Установите его с помощью:

yum install https://github.com/gdubicki/centos-pam-with-update-motd/releases/download/1.1.8-1022.3/pam-1.1.8-1022.el7.x86_64.rpm

Использовать с:

  1. Удалить статический по умолчанию /etc/motd.
  2. Сделайте так, чтобы SSHD не отображал статический MOTD с линиями PrintMotd no, Banner none, UsePAM yes (и необязательно PrintLastLog no) в вашем /etc/ssh/sshd_config & перезагрузить sshd служба.
  3. Добавьте эту строку в свой /etc/pam.d/sshd: session optional pam_motd.so motd=/run/motd.dynamic.
  4. Добавьте свои скрипты в /etc/update-motd.d, как на Ubuntu

Пожалуйста, посетите https://github.com/gdubicki/centos-pam-with-update-motd для получения самой последней информации.

Не уверен, что это одинаково во всех дистрибутивах, но в Arch Linux/etc/profileфайл уже будет содержать некоторый контент, который вы обычно не хотите трогать. Но вы можете создать новый файл в/etc/profile.d/папку и заполните ее скриптом, который хотите выполнить.

Например:

содержание/etc/profile.d/motd.sh:
      echo "Hello, we have the date and time: $(date)"

который выводит этот текст при входе в систему:

      Hello, we have the date and time: Tue Apr  4 00:53:11 CEST 2023
Другие вопросы по тегам