Обнаружение начала сеанса Teamviewer и его уничтожение через X минут

У меня есть приложение, работающее на сервере Ubuntu 14.04.3 с использованием xsession и xorg с google-chrome. Я установил teamviewer 10 на машине, поэтому, если у них есть подключение к Интернету, они могут удаленно войти в ПК и отредактировать настройки приложения. То, что я хочу сделать, - это обнаружить, когда создается сеанс Teamviewer (когда кто-то входит в компьютер) и после некоторого времени выкидывает его (что может быть сделано путем убийства идентификатора процесса Teamviewer).

Дело в том, что я не знаю, как я могу обнаружить, когда сеанс начинается с teamviewer. Возможно ли это сделать?

1
задан 25 September 2015 в 13:53

2 ответа

Я не смог найти инструмент командной строки для проверки текущих сеансов. Кроме того, TeamViewer не создает новый процесс для каждого нового сеанса.

Я в конечном итоге проверяю созданные сокеты напрямую, используя модифицированный скрипт, написанный cYrus, из раздела «Как определить время соединения сокета на Linux

Скрипт проверяет установленные соединения демонами teamviewerd. Это зависит от конфигурации, но по умолчанию, он пытается порт 5938, если он не работает, пытается 443 и может быть 80. Затем он выдает время жизни / времени в минутах от всех сокетов.

teamviewerd создает одно соединение при запуске настольного приложения, а затем другое новое для сеанса (я не мог тестировать несколько сеансов) [!d4 ]

#!/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

Другие возможные варианты:

Проверить журнал соединений, подобных Амиту в его ответе. Используйте xdotool или аналогичный инструмент, чтобы открыть боковую панель для закрытия сеанса.
0
ответ дан 23 May 2018 в 17:11

Начиная с TeamViewer 12 и Ubuntu 16.04, новый процесс

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

создается с началом сеанса. Это можно легко контролировать.

(Я знаю, что это старый вопрос, но кто-то может найти обновление полезным)

0
ответ дан 23 May 2018 в 17:11

Другие вопросы по тегам:

Похожие вопросы: