У меня есть приложение, это работает на Сервере Ubuntu 14.04.3 использования xsession и Xorg с Google Chrome. Я установил teamviewer 10 на машине поэтому, если у них есть интернет-соединение, они могут удаленно войти в ПК и изменить настройки приложения. То, что я хочу сделать, должно обнаружить, когда teamviewer сессия создается (когда кто-то входит в ПК), и после того, как определенное количество времени выгоняет его (который может быть сделан путем уничтожения идентификатора процесса Teamviewer).
Вещь состоит в том, что я не знаю, как я могу обнаружить, когда сессия запускается с teamviewer. Это - возможное выполнение такой вещи?
У меня есть 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") }'
Я не мог найти, что любой инструмент командной строки проверил текущие сессии. Также 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
Другие возможные варианты:
xdotool
или подобный инструмент, для открытия боковой панели их закрыли сеанс.С TeamViewer 12 и Ubuntu 16.04, нового процесса
/opt/teamviewer/tv_bin/TeamViever_Desktop --IPCport 5936 --module 1
порожден с запуском сессии. Это может легко контролироваться.
(Я знаю, что это - старый вопрос, но кто-то мог бы найти обновление полезным),