Написал тут давече маленький скрипт для отображения подключенных по ссх юзверов. Показывает мне ник, хост и при надобности pid терминала юзвера. Кто то может возразить нах это надо. Достаточно who набрать или w. Но эти команды показывают всех подключенных юзверей. А фильтровать кажный раз лень в ручную. ps ax | grep sshd хоть и показывает имя и терминал пользователя, но не показывает его хост. В общем соеденив это — наваял то что мне надо 🙂
Скрипт кривоват, но главное пашет.
Сам скрипт:
#!/usr/local/bin/zsh
if [ "$1" = "-h" ]
then
echo "Usage: `basename $0` [-uhp]"
echo "-h Print this help"
echo "-u Print only unique logged users."
echo "-p Print PID of TTY"
echo "Results:"
echo "Login : Hostname [ Tty PID ]"
exit 0
fi
if [ "$1" = "-p" ]
then
TPID=`ps ax | grep 'sshd' | grep 'tty' | sed -e 's/ (.*)tty*/:/' -e 's/ .*$//'`
echo $TPID | sed "s/(.*)://" > /tmp/TERMfile
echo $TPID > /tmp/PIDfile
for 1 in `cat /tmp/TERMfile`
do
w | grep "$1" | grep -v ":0.0" |
sed -e "s/ [a-z0-9]* / : /g"
-e "s/ .*/ [ `grep "$1" /tmp/PIDfile | sed -e 's/:.*//'` ]/"
done
rm -f /tmp/TERMfile /tmp/PIDfile
exit 0
fi
NAME=`ps ax | grep 'sshd' | grep 'tty' | sed -e 's/^(.*)tty*//'
-e 's/ .*$//'`
CMD=`w | grep $NAME | sed -e "s/ [a-z0-9]* / : /g"
-e "s/ .*//" | sort`
if [ "$1" = "-u" ]
then
echo $CMD | uniq
exit 0
fi
echo $CMD
Шабанг поменяйте на свой шел.
Запускается у мня так:
$ zsh ./sshdstat.zsh
Если лень смотреть в код, до доступные флаги можно поглядеть так:
$ zsh ./sshdstat.zsh -h
Совмещение флагов не работает. Используйте только один из доступных.
© Человек_Разумный


No comments
RSS / trackback