Answers:
(不是很安全且健壮,但可以正常使用):使用shell,
for i in work-server01 home-server01; do
ping -c 1 "$i" && syngergyc "$i"
done
如果您正在运行Windows,则可以在cygwin或bat文件中执行类似的操作。这个想法是:让您的计算机查找主机,如果可以找到它,则连接到该主机。
(编辑)您想明确地运行它,而不是使其在后台运行。您不想走进咖啡店或飞机场,而让一些幸运的恶性陌生人接您的孩子。
我知道这是一篇旧文章,但是我最终写了一个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
从某种意义上说,我可以连接第一台服务器笔记本电脑,然后断开第二台服务器笔记本电脑的电源,这非常棒,它将自动连接,而无需对客户端计算机做任何事情。
这个答案类似于@ 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记录)