Отслеживаение подключенных пользователей
Возникла задача — оперативно узнать, подключился ли пользователь по ssh к linux машине.
С помощью команды who можно элементарно узать, кто сейчас подключен:
bessarabov@server:~$ who
bessarabov pts/0 2008-08-06 15:35 (1.1.1.1)
Для того, чтобы оперативно узнать, кто подключен, нужно просто запускать часто эту команду и смотреть на ее вывод. Без проблем можно все время руками ее запускать, но соврешенно просто это автоматизировать.
В bash существует возможность писать циклы. Чуть-чуть разобратся и получается вот такая команда (она бесконечно запускает who (останавливается по ctrl+C)):
$ until false; do who; done
О! Почти то, что нужно. Немного причесываю и готово:
$ until false; do date; who; echo “”; sleep 1; done
Предлагаю еще такой вариант, с использованием http://ru.wikipedia.org/wiki/Watch
$ watch who
Спасибо большое! Не знал про такую штуку.
В man-е (http://usr-share-man.org/man1/watch.html) мега повеселилил пример:
You can watch for your administrator to install the latest kernel with
watch uname -r
Прикольно, подняло настроение. Только reboot не минуем! %)
Есть еще tail, очень полезная штука с ключиком -f для просмотра логов в реальном времени.
$ tail -f /var/log/apache/access.log
Ну, tail -f — известная для меня штука, а во про watch я не знал.
Еще раз спасибо =)