Обнаружьте teamviewer сессию, запускают и уничтожают его после X минут

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

Вещь состоит в том, что я не знаю, как я могу обнаружить, когда сессия запускается с teamviewer. Это - возможное выполнение такой вещи?

6
задан 25 September 2015 в 03:53

3 ответа

  • У меня есть teamviewer 10 как быстрая версия поддержки на моей хост-машине.

    Файл журнала Teamviewer: ~/Desktop/TeamViewer/teamviewerqs/logfiles/TeamViewer10_Logfile.log

  • Для полной версии: ~/.config/teamviewer10/logfiles/TeamViewer10_Logfile.log

Таким образом для обнаружения сессии можно следить за этим использованием файла tail -f и шаблон * "====.Open Рабочий стол! ====". И после того как шаблон найден, уничтожив необходимый процесс после того, как скажут 60 secs.

tail -f "$HOME/Desktop/TeamViewer/teamviewerqs/logfiles/TeamViewer10_Logfile.log" \
 | awk '/==== .*Open Desktop! ====/ { system("sleep 60 ; pkill -9 TeamViewer_Desktop") }'
2
ответ дан 23 November 2019 в 08:09

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

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

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

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

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

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

  • Проверьте, что журнал для соединений как Amit сделал в его ответе.
  • Использовать xdotool или подобный инструмент, для открытия боковой панели их закрыли сеанс.
0
ответ дан 23 November 2019 в 08:09

С TeamViewer 12 и Ubuntu 16.04, нового процесса

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

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

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

0
ответ дан 23 November 2019 в 08:09

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

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