检测 teamviewer 会话启动并在 X 分钟后终止它

检测 teamviewer 会话启动并在 X 分钟后终止它

我有一个应用程序在 Ubuntu Server 14.04.3 上运行,使用 xsession 和 xorg 以及 google-chrome。我在机器上安装了 teamviewer 10,因此如果他们有互联网连接,他们就可以远程登录 PC 并编辑应用程序的设置。我想要做的是检测何时创建 teamviewer 会话(当有人登录 PC 时),并在一定时间后将其踢出(可以通过终止 Teamviewer 进程 ID 来实现)。

问题是我不知道我如何检测teamviewer会话何时开始。这可能吗?

答案1

  • 我的主机上安装了 teamviewer 10 作为快速支持版本。

    Teamviewer日志文件:~/Desktop/TeamViewer/teamviewerqs/logfiles/TeamViewer10_Logfile.log

  • 完整版:~/.config/teamviewer10/logfiles/TeamViewer10_Logfile.log

因此,要检测会话,您可以使用以下方式查看此文件tail -f以及模式 *"==== 。打开桌面!====". 一旦找到模式,就会在 60 秒后终止所需的进程。

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

答案2

我找不到任何命令行工具来检查当前会话。此外,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或类似工具,打开侧面板然后关闭会话。

答案3

作为TeamViewer 12Ubuntu 16.04,一种新工艺

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

随会话的开始而产生。这很容易被监控。

(我知道这是一个老问题,但有人可能会发现更新很有用)

相关内容