Этот простой скрипт покажет уведомление Zenity при входе пользователя в систему:
case "$PAM_TYPE" in
'open_session' )
if [ "$PAM_SERVICE" = "lightdm" ] ; then
DISPLAY=:0 sudo -u $PAM_USER notify-send "Hello there!" "Hello"
else
echo "Hello there!"
fi
;;
esac
Однако, это будет работать, только если переменная DISPLAY фактически равна 0. И не будет работать для терминала или удаленного устройства ( ssh) логины (очевидно, эхо там никуда не денется). Что я могу сделать с этим?
Мне нужен способ:
Существует более простой способ отправки уведомлений при входе в систему (без знания переменной DISPLAY или использования команды tty
для идентификации вашего терминала).
Чтобы отправить уведомление во время запуска GNOME или другой среды рабочего стола, вы должны создать файл /etc/xdg/autostart/foobar.desktop
, который вызывает ваш скрипт с notify-send "Hello there!" "Hello"
. Проверьте /etc/xdg/autostart/
для примеров. Вы можете сделать копию существующего файла .desktop
, переименовать его и изменить для своих нужд. Вы также можете добавить параметр X-GNOME-Autostart-Delay=XX
, чтобы установить задержку XX
для вашей задачи. Если вам нужно добавить это только для выбранного пользователя, используйте ~/.config/autostart/
этого пользователя для размещения файла .desktop
и проверьте с помощью gnome-session-properties
, активен ли этот модуль запуска.
Чтобы отправить уведомление о входе в систему через терминал или ssh, вы можете использовать скрипт, помещенный в /etc/profile.d/
, или отправить это уведомление, добавив напрямую echo "My Message"
в /etc/bash.bashrc
. Они оба вызываются из /etc/profile
и будут запускаться при каждом входе в интерактивную оболочку, будь то виртуальный терминал или ssh-вход. Для выбранного пользователя используйте ~/.bash_login
этого пользователя и поместите туда нужное сообщение. Примечание: использование /etc/bash.bashrc
и ~/.bash_login
имеет смысл, если используется оболочка bash
по умолчанию; если пользователь вызывает какую-то другую оболочку, например /bin/sh/
, эти файлы будут игнорироваться.