Não encontrei nenhuma ferramenta de linha de comando para verificar as sessões atuais. O TeamViewer também não cria novo processo para cada nova sessão.
Eu acabo verificando os sockets criados diretamente usando um script modificado escrito pelo cYrus por Como determinar o tempo de conexão do soquete no Linux
O script verifica as conexões estabelecidas pelo daemon teamviewerd
. Depende da configuração mas padrão, ele tenta porta 5938
se falhar tenta 443
e pode ser 80
. Em seguida, imprime o tempo de vida útil em minutos de todos os soquetes.
teamviewerd
cria uma conexão quando o aplicativo da área de trabalho é iniciado e depois outra nova para a sessão (não consegui testar várias sessões)
#!/bin/bash
function suptime() {
addr=${1:?Specify the remote IPv4 address}
port=${2:?Specify the remote port number}
pid=$(netstat -ntp 2>/dev/null | awk '
$6 == "ESTABLISHED" && $5 == "'$addr:$port'"\
{sub("/.*", "", $7); print $7}')
hex_addr=$(python -c "
import socket, struct;
print hex(struct.unpack('<L',
socket.inet_aton('$addr'))[0])[2:10].upper().zfill(8)")
hex_port=$(python -c "print hex($port)[2:].upper().zfill(4)")
inode=$(awk '$3 == "'$hex_addr:$hex_port'" {print $10}' /proc/net/tcp)
time=$(find /proc/$pid/fd -lname "socket:\[$inode\]" -printf %A@)
LANG=C printf '%i' $(bc <<<"($(date +%s.%N) - $time)/60")
}
ns=$(netstat -tpn | grep -e ":5938 *ESTABLISHED *[0-9]*/teamviewerd" -e ":443 *ESTABLISHED *[0-9]*/teamviewerd" | awk '{print $5}')
for s in $ns
do
addr=$(echo $s | awk '{split($0,a,":"); print a[1]};')
port=$(echo $s | awk '{split($0,a,":"); print a[2]};')
echo $(suptime $addr $port)
done
Outras opções possíveis:
- Verifique o log de conexões como Amit fez em sua resposta.
- Use
xdotool
ou ferramenta semelhante para abrir o painel lateral e fechar a sessão.