web-dev-qa-db-ja.com

ssh経由でログインするときに、ローカルユーザーがログインしているかどうかを調べる

リモートでアクセスできるだけでなく、ワークステーションとしても機能するマシンで計算を実行する必要があります。それらの多くがあります、そして、私は「無料の」ものを選びたいです。この場合、無料とはローカルに誰もログインしていないことを意味します。

私の最初の試みはwhoコマンドでしたが、何らかの理由で「選択された」ユーザーのみを一覧表示し、それらがどのように選択されているのか本当にわかりません。次に試してください:ps aux | cut -d " " -f1 | sort | uniq:デーモンの束だけでなく、whoによって表示されなかったローカルユーザーも表示します。

私の現在の解決策は、ps aux | grep "gnome-session"にアクセスして実行することです。理想的には、ログイン時に(アクティブな)ローカルユーザーについて警告するsshプロファイルに含めることができるものを探しています。

編集:

  • whowもローカルユーザーを返しませんでした。これは予期しない動作ですか?
  • uptime一方で、適切な量のユーザー(ローカルおよびリモートからルートなどのシステムユーザーを除く)が表示されました
  • fingerはインストールされていません
6
sebastiangeiger

wを使用します

w manページから:

誰がログオンしていて何をしているのかを表示します。

出力例:

$ w
09:15:10 up 43 min,  2 users,  load average: 0.74, 0.38, 0.24

USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU  WHAT

kucing   tty7     :0               08:32   43:15m 57.73s  0.18s x-session-manager
kucing   pts/0    :0.0             08:48    0.00s  0.24s  0.00s w´
7
pl1nk

fingerコマンドはインストールされていますか、インストールされていない場合はインストールできますか?これにより、ログインしているすべてのユーザーのリストと、どこから(つまり、別のマシン、またはマシンに直接)のリストが表示され、そのユーザーがアイドル状態であった時間も通知されます。

詳細については、 buntu finger manpage を参照してください。

4
theabro

私は一緒に行きます:

who | cut -d' ' -f1 | sort | uniq

realユーザーのリストが表示されます。リストが空の場合-マシンはログアウト状態にあり、誰かがログインするのを待っています。
ps auxは、一部のシステムユーザーも表示しますが、これはおそらく表示したくないでしょう。

2

last

/ var/log/wtmpを調べ、現在ログオンしているを含む最後にログオンしたユーザーのログを表示します。

1
pl1nk

計算に最高の快適さを設定することを検討してください。ログインしている可能性のある他のユーザーのリソースを占有しないでください。

Nice -n 19 your_calculation_command
1
geirha

ログに記録されたすべてのユーザーをユニークな方法でリストするための私の答え。

w | tail -n +3 | cut -d " " -f1 | sort | uniq
1
Eduardo Rolim

迅速かつ汚い試み:

ps au --no-heading | cut -d " " -f1 | uniq
0
david6

私はこれが好きです:

for i in $(ls /dev/pts/*);do echo "TTY $i - $(ps e -t $i|grep -oP "(?<=(RUSER\=))[a-z]*"|uniq)";done ; echo -e '\n+++\n';  for i in $(pgrep ssh);do pstree -paul $i;done
0
Adam