Detectar início da sessão do TeamViewer e matá-lo após X minutos

6

Eu tenho um aplicativo que está sendo executado em um servidor Ubuntu 14.04.3 usando xsession e xorg com o google-chrome. Instalei o teamviewer 10 na máquina, para que, se eles tiverem conexão com a Internet, possam fazer login remotamente no PC e editar as configurações do aplicativo. O que eu quero fazer é detectar quando uma sessão do TeamViewer está sendo criada (quando alguém faz o login no PC) e depois de um certo tempo expulso (o que pode ser feito matando o ID do processo Teamviewer).

O problema é que não sei como posso detectar quando uma sessão começa com o teamviewer . É possível fazer uma coisa dessas?

    
por kfirba 25.09.2015 / 12:23

3 respostas

2
  • Eu tenho o teamviewer 10 como uma versão de suporte rápido na minha máquina host.

    Arquivo de log do Teamviewer: ~/Desktop/TeamViewer/teamviewerqs/logfiles/TeamViewer10_Logfile.log

  • Para a versão completa: ~/.config/teamviewer10/logfiles/TeamViewer10_Logfile.log

Então, para detectar a sessão, você pode assistir a este arquivo usando tail -f e o padrão * "====. Open Desktop! ====" . E uma vez que o padrão é encontrado, mate o processo necessário depois de 60 segundos.

tail -f "$HOME/Desktop/TeamViewer/teamviewerqs/logfiles/TeamViewer10_Logfile.log" \
 | awk '/==== .*Open Desktop! ====/ { system("sleep 60 ; pkill -9 TeamViewer_Desktop") }'
    
por Amit 02.10.2015 / 00:18
0

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.
por user.dz 02.10.2015 / 00:40
0

A partir do TeamViewer 12 e do Ubuntu 16.04 , um novo processo

/opt/teamviewer/tv_bin/TeamViever_Desktop --IPCport 5936 --module 1

é gerado com o início da sessão. Isso pode ser facilmente monitorado.

(Eu sei que esta é uma pergunta antiga, mas alguém pode achar a atualização útil)

    
por Ondrian 16.11.2017 / 15:42