sshd : Статистика подключенных


Tagged , , ,

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

Совмещение флагов не работает. Используйте только один из доступных.

© Человек_Разумный

Share:

No comments

RSS / trackback

Respond