Bash Shell:我如何知道TeamViewer是否已断开连接?

时间:2015-03-10 15:20:55

标签: linux bash shell teamviewer

有时 TeamViewer会断开本身(或断开连接)与其互联网主服务器的连接。

我正在编写一个脚本,用于检查连接是否丢失,如果是,则杀死并重新打开相关进程,再次使TeamViewer启动并运行

问题是:我不知道如何发现 TeamViewer已失去其远程访问功能(这是:远程访问和控制的功能) 。

经过测试直到现在:

  • 检查TeamViewer进程和/或守护进程。无效:即使断开连接也会继续工作。
  • NICs审核。无效:TeamViewer似乎没有添加任何内容。
  • 请参阅TeamViewer的主窗口。无法以编程方式有效或易于实施。

如何以编程方式了解TeamViewer是否已断开连接

我不知道这种方法在平台之间是否有所不同,但至少我想了解一些Linux shell的解决方案。如果可能的话,打击。

2 个答案:

答案 0 :(得分:0)

您是否考虑过捕获信号(如果可能)并执行将重启TeamViewer的功能。

从脚本启动并捕获退出信号

function restartTV {
    # re-start TeamViewrt
    sudo /etc/init.d/something start
}
trap finish EXIT            # or appropriate signal
sudo /etc/init.d/something stop
# Do the work...

答案 1 :(得分:0)

可能我来晚了,但是遇到了同样的问题并找到了可能的解决方案。我正在使用teamviewer 12。

我注意到,就我而言,有时不启动某些与GUI相关的进程,因此如果我使用ssh并使用以下命令检查teamviewer进程的列表,则该计算机不在计算机和联系人列表中在线:

ps -ef | grep [t]eamviewer

我只有一个过程,teamviewer守护程序:

root      1808     1  0 09:22 ?        00:00:53 /opt/teamviewer/tv_bin/teamviewerd -d

但是,当一切都好时,我有了:

root      1808     1  0 09:22 ?        00:00:53 /opt/teamviewer/tv_bin/teamviewerd -d
rocco    10975  8713  0 09:31 ?        00:00:58 /opt/teamviewer/tv_bin/wine/bin/wineserver
rocco    11064 10859  0 09:31 ?        00:00:33 /opt/teamviewer//tv_bin/TVGuiSlave.64 31 1
rocco    11065 10859  0 09:31 ?        00:00:28 /opt/teamviewer//tv_bin/TVGuiDelegate 31 1

因此,简单地计算出对我来说有效的过程数即可。

#!/bin/bash

online() {
  ## Test connection
  ping -c1 www.google.com > /dev/null
  return $?
}

online
if (test $? -eq 0)
then
    network=$(ps -ef | grep [t]eamviewer | wc -l)
    if (test $network -gt 3)
    then
        echo Machine online, teamviewer connected
    else
        echo Machine online, teamviewer not connected, trying restart daemon
        sudo teamviewer --daemon restart
    fi
fi