私は自宅やオフィスで使用するラップトップを持っています。また、両方の場所にデスクトップコンピューター(キーボードとマウスが接続されている)をセットアップしています。両方のデスクトップはSynergyサーバーとして設定されているため、入力デバイスをラップトップと共有できます。
どちらかの場所に到着したら、その場所のデスクトップに接続するようにラップトップを再構成する必要があります。これには常に、ラップトップが接続しようとするIPアドレスの変更が含まれます。
クライアント構成にサーバーアドレスのリストを入力し、ネットワーク上で検出された場合にクライアントにそれらのアドレスのいずれかへの接続を試行させることができれば、特に便利です。
これが不可能な場合、ラップトップを移動するときに手動で構成を調整し続ける必要がないように、セットアップを構成できる別の方法はありますか?
ありがとう!
これは古い投稿ですが、これを処理するための小さな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
最初のサーバーラップトップを接続してから2番目のサーバーラップトップの電源を切ることができ、クライアントコンピューターに何もしなくても自動的に接続できるという意味で素晴らしいです。
(あまり安全で堅牢ではありませんが、実用的なスタートです):Shellを使用して、
for i in work-server01 home-server01; do
ping -c 1 "$i" && syngergyc "$i"
done
Windowsを実行している場合は、cygwinまたはbatファイルで同様のことを行うことができます。アイデアは次のようになります。コンピュータにホストを探してもらい、見つかった場合はホストに接続します。
(編集)これをバックグラウンドで実行するのではなく、明示的に実行する必要があります。あなたは喫茶店や空港に足を踏み入れて、幸運な悪性の見知らぬ人にあなたのラッピーをクライアントとして連れて行ってもらいたくありません。
この答えは@ noah-birnelの答えに似ていますが、相乗効果の構成方法を変更する必要はありません。ただし、Linuxが必要です。
これらの行に沿ってrootとしてスクリプトを実行します。これは、スケジュール(cron)するか、ネットワーク構成のフックとして組み込むことができます(Debianスタイルのディストリビューションのポストアップライン、またはカスタマイズされたsystemdネットワークサービスなど)
テストするときは、hostsファイルをバックアップして、不可逆的な破損が発生していないことを確認してください。
#!/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レコードを更新します)。