У меня аналогичная проблема. Мой подход заключается в использовании dtach
для управления подключением и отключением от терминала, на котором запущен контейнер. Затем внутри контейнера я могу запустить tmux
/ screen
и т. Д.
machinectl
позволит вам запускать контейнеры при загрузке, но на момент написания этой статьи debian stable не поддерживает иметь версию systemd
, которая включает эту функцию.
Пара вещей:
Ваш~/.bash_profile
запускается только тогда, когда вы входите в систему. Эти другие пользователи могут не входить в систему как вы.
Чтобы узнать, кто заходит на ваш компьютер с CentOS через ssh, проанализируйте вывод /var/log/secure
.
Это будет выглядеть примерно так:
tail -f /var/log/secure | while read LOGLINE
do
[[ "${LOGLINE}" == *"logged in"* ]] && mail -s 'SSH Notification' $MY_EMAIL_ADDRESS
done
РЕДАКТИРОВАТЬ :Вы отредактировали свой вопрос, чтобы узнать, как работает команда who
. Послушайте, я не разработчик C, но вот исходный код команды who
, если вы действительно хотите взглянуть на то, как она работает. Я не думаю, что это то, что вы ищете, однако -и я знаю, что у меня нет другого способа помочь вам. Даже если вы можете создать скрипт для проверки входа в систему, используя cron
и who
, всегда есть вероятность, что кто-то может войти и выйти из системы между вашими запусками. Журналы - это путь.
Вы можете получить нужную информацию из команды "who", а затем направить ее в команду mail. Пример команды:
who | awk '{print $1" "$3" "$4" " $5}' | tail -1 | mail -s 'WARNING: SSH Notification' EMAIL_ADDRESS
Сохраните предыдущую команду как bash
и запланируйте ее выполнение в crontab
каждые определенные минуты (, например. каждые 30 минут ).
вы можете передать вывод команды last
.
last | head -1 | mail -s 'WARNING:' EMAIL_ADRESS