В Unix-подобных системах есть замечательный сервис — MOTD (message of the day). Он умеет показывать различные сообщения при входе пользователя в систему. Но возможности этого сервиса не ограничиваются только выводом статических сообщений. В этой статье мы увидим, что еще интересного можно получить от этого сервиса и, что полезного можно к нему добавить.
Чем сам по себе полезен MOTD? Вы можете просто показывать на экране сообщение типа «Не влезай — убью» или же, с маленькими доработками, можно заставить MOTD собирать какую либо информацию о состоянии Вашей системы непосредственно на тот момент когда Вы зарегистрировались в ней. Что это может быть за информация? Почти все, что угодно — имя сервера, к которому Вы подключились, сведения о файловой системе (сколько всего доступно места, сколько занято, сколько свободно….), статистика сетевых подключений …. и это только первое, что приходит на ум 😉
Принцип работы MOTD весьма прост. В Ubuntu до 10-й версии MOTD генерировался с помощью crontab. С 10-й версии генерацию motd перенесли в модули PAM, которые выполняются непосредственно в момент входа в систему. Задействуется этот функционал строкой в файле /etc/pam.d/login: «session optional pam_motd.so».
И как эту полезность заполучить — спросите Вы. А весьма просто. Приступим!
В /etc есть папка /etc/update-motd.d. В нее Вам и нужно помещать свои скрипты, которые должны выполняться при входе пользователя в систему. Обратите внимание на имена файлов, хранящихся в /etc/update-motd.d — они начинаются с двух цифр. Эти цифры определяют порядок запуска скриптов.
Теперь немного практики. Вот так выглядит стандартное окно входа в консоль
А вот как мы можем дополнить стандартный вывод консоли
Для избежания проблем для начала снимаем атрибут выполнения с оригинального файла 00-header
chmod -x 00-header
и создаем свой файл 00-myheader
touch /etc/update-motd.d/00-myheader
Все изменения вносились в файл /etc/update-motd.d/00-myheader. Далее текст скрипта:
#!/bin/bash hn=`hostname` echo " =======================================" echo " Welcome to "$hn echo " =======================================" btime=`who -b | sed -e 's/[^A-Z]*//'` utime=`uptime | sed -e 's/ [0-9:]* up />/' -e 's/,.*//'` echo " ==== BOOT TIME ==== ==== UPTIME ====" echo " "$btime" "$utime echo "===================== DISK USAGE ======================" df -h echo "================== HTTP CONNECTIONS ==================="
netstat -an|grep ":80 "|wc -l echo "===================== IP ADDRESSES ====================" ifconfig |grep "inet addr"|grep -v 127.0.0.1|awk {' print $2'}|awk -F : {' print $2'}
Дабы не выполнялись лишние скрипты из папки /etc/update-motd.d/, предлагаю снимать атрибут «исполняемый» с о всех файлов, кроме тех, которые должны выполняться. Например так
chmod -R -x /etc/update-motd.d/*
потом добавить право выполнения нужному скрипту
chmod +x /etc/update-motd.d/00-myheader
Выключается MOTD путем комментирования строчки «session optional pam_motd.so» в файлах /etc/pam.d/login и
/etc/pam.d/sshd.