Quantos usuários remotos?

1

Preciso contar quantas pessoas estão logadas remotamente na minha máquina virtual na escola. Eu posso dizer se alguém ssh'd do host, mas estou tendo problemas para dizer se alguém está remotamente conectado a uma sessão do XWindows através do VNC ou se eles estão sentados no console da escola. Quando eu entro na VM da minha escola de casa e faço um, isso mostra isso quando eu sou o único que está logado:

 user1   tty7    2013-10-10 23:31 (:1)
 user1   pts/0   2013-10-10 23:23 (:1.0)

Observação: ninguém pode fazer login diretamente na VM. Deve fazer o login na lan da escola, depois no host da VM e, em seguida, na VM. Eu realmente estou querendo saber se é mesmo considerado um login remoto se eu tiver que fazer o login da máquina host da minha máquina virtual.

    
por user1655887 12.10.2013 / 02:41

1 resposta

3

quem

Você terá que fazer isso usando algumas abordagens. Você pode usar o comando who para ver quem tem um shell ativo ou ssh 'em sua VM.

$ who | cut -d' ' -f1 | sort -u
saml

usuários

Você também pode usar o comando user para ver quem está conectado. Esses são os usuários atualmente exibidos como ativos nos arquivos de log /var/run/utmp & /var/log/wtmp .

$ users | sed 's/ /\n/g'|sort -u
saml

quem revisitou

Se você usar o comando who , observará as seguintes linhas:

$ who
saml     tty1         2013-10-06 10:05 (:0)
saml     pts/0        2013-10-06 10:07 (:0.0)
saml     pts/5        2013-10-07 11:48 (:0.0)

A segunda coluna (tty1) significa que alguém está conectado localmente a um dos terminais físicos. Além disso, você notará que a quinta coluna dessa linha mostra (': 0). Isso significa que alguém está sentado diretamente na VM e está executando a área de trabalho do X.

As outras linhas, como pts/0 , são pseudo-terminais e normalmente são criadas quando você cria guias no gnome-terminal ou ssh na caixa.

VNC?

Este é um pouco mais complicado. Realmente não há uma maneira de saber isso diretamente, especialmente desde que o servidor VNC está integrado no X. Procurando por um processo não mostra nada.

$ pgrep -f vnc
$

Você pode procurar por conexões de rede VNC:

$ sudo netstat -anpt | grep -i Xorg
tcp        0      0 0.0.0.0:5900                0.0.0.0:*                   LISTEN      3948/Xorg           
tcp        0      0 0.0.0.0:6000                0.0.0.0:*                   LISTEN      3948/Xorg           
tcp        0      0 192.168.1.3:5900            192.168.1.20:41064          ESTABLISHED 3948/Xorg           
tcp        0      0 :::6000                     :::*                        LISTEN      3948/Xorg

Aqui você pode ver que existe uma conexão VNC do IP 192.168.1.3 para a porta 5900, que é normalmente usada para o VNC, mas esta porta não é de forma alguma uma garantia.

Quando a conexão desaparece, as conexões são assim:

 $ netstat -anpt | grep -i Xorg
tcp        0      0 0.0.0.0:5900                0.0.0.0:*                   LISTEN      3948/Xorg           
tcp        0      0 0.0.0.0:6000                0.0.0.0:*                   LISTEN      3948/Xorg           
tcp        0      0 :::6000                     :::*                        LISTEN      3948/Xorg      

Além disso, podemos descobrir se o servidor X está executando o VNC, o que parece ser.

$ lsof -p 3948 | grep -i vnc
Xorg    3948 root  mem    REG      253,0   394420   48693751 /usr/lib/xorg/modules/extensions/libvnc.so

Provavelmente, a sua melhor aposta para atingir usuários VNC é eliminar quem está realmente fisicamente na caixa (usuários em terminais físicos como tty1), qualquer um que tenha uma sessão GNOME está executando uma área de trabalho X e provavelmente usando VNC para conectar para isso.

$ ps -f -p $(pgrep -f gnome-session)
UID        PID  PPID  C STIME TTY          TIME CMD
root     22240  3943  0 Sep29 ?        00:00:00 /usr/bin/gnome-session

Referências

por 12.10.2013 / 03:09

Tags