Написал тут давече маленький скрипт для отображения подключенных по ссх юзверов. Показывает мне ник, хост и при надобности 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