是否可以将Synergy客户端配置为连接到许多服务器之一?


2

我有一台笔记本电脑,可以在家中和办公室使用。我还在两个位置都设置了台式计算机(带有连接的键盘和鼠标)。两个台式机都设置为Synergy服务器,以便我可以与笔记本电脑共享它们的输入设备。

当我到达任一位置时,我需要重新配置笔记本电脑以连接到该位置的台式机。这始终涉及更改便携式计算机尝试连接的IP地址。

如果我可以在客户端配置中仅输入服务器地址列表,并让客户端尝试与这些地址中的任何一个建立连接(如果在网络上发现),那将特别有用。

如果无法做到这一点,是否还有另一种方法可以配置我的设置,以便在重新放置笔记本电脑时不必继续手动调整配置?

谢谢!

Answers:


1

(不是很安全且健壮,但可以正常使用):使用shell,

for i in work-server01 home-server01; do
    ping -c 1 "$i" && syngergyc "$i"
done

如果您正在运行Windows,则可以在cygwin或bat文件中执行类似的操作。这个想法是:让您的计算机查找主机,如果可以找到它,则连接到该主机。

(编辑)您想明确地运行它,而不是使其在后台运行。您不想走进咖啡店或飞机场,而让一些幸运的恶性陌生人接您的孩子。


在安全方面,强烈建议您使用
SSL-

1

我知道这是一篇旧文章,但是我最终写了一个bash脚本来为我处理该脚本,它实际上循环遍历您的IP,直到一个具有活动协同端口的IP可用,然后尝试与该--no-restart标志连接,因此如果连接成功重置后可以重新启动该过程。

要点在这里:https//gist.github.com/CrashyBang/c2d910f9e495f4506916e12cf2b6051d

或在这里编码:

#!/bin/bash

# IP address to cycle through (in order of priority)
ip=( "192.168.20.102" "192.168.20.103" )

# Check if synergy is already connected
if pgrep "synergyc"; then
  # Synergy already connected
  echo "Synergy is already running."
 else
   # Loop over ip's
   for i in "${ip[@]}"
   do
     # Ping ip with default synergy port
     nc -z "$i" 24800
     if [ "$?" -eq 0 ]; then
       # Connect synergy if ip available and synergy port active
       /usr/bin/synergyc --no-restart -n media -f "$i"
       # Use no-restart so if connection is cut synergy stops.
     fi
   done
 fi

我像这样在15秒的cron上运行它:

* * * * * /usr/local/bin/synergy-client
* * * * * sleep 15 ; /usr/local/bin/synergy-client

从某种意义上说,我可以连接第一台服务器笔记本电脑,然后断开第二台服务器笔记本电脑的电源,这非常棒,它将自动连接,而无需对客户端计算机做任何事情。


0

这个答案类似于@ noah-birnel的答案-但不更改协同作用的配置方式。但是它确实需要Linux。

使脚本以root身份运行。这可以安排(定时)或作为网络配置中的钩子使用(Debian风格的发行版中的后继线路,或定制的系统化网络服务/等)。

测试时,请备份主机文件,以确保不会造成不可逆转的损坏。

#!/bin/bash

servername="synergy-server"
#These should be IP addresses.
hostnames="work.ip.add.ress home.ip.add.ress"
hosts="/etc/hosts"

grep $servername $hosts || ( echo ; echo "#synergy server address" ; echo "0.0.0.0 $servername" ) >> $hosts

for server in $hostnames ; do
 ping -c 1 "$server" && sed -i -n "s/.*$servername/$server $servername/" $hosts
done

如果要在脚本中使用主机名而不是IP地址,则需要扩展脚本以获取IP地址。另外,可以使用任何获得“动态”主机名的方法(例如,客户端上的主机dnsmasq并让脚本更新内部DNS记录)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.