2

У меня есть ноутбук, которым я пользуюсь дома и в офисе. У меня также есть настольные компьютеры (с подключенными клавиатурами и мышами), настроенные в обоих местах. Оба рабочих стола настроены как серверы Synergy, поэтому я могу использовать их устройства ввода на ноутбуке.

Когда я приезжаю в любое место, мне нужно перенастроить ноутбук для подключения к рабочему столу в этом месте. Это всегда включает изменение IP-адреса, к которому пытается подключиться ноутбук.

Было бы особенно полезно, если бы я мог просто ввести список адресов серверов в конфигурации клиента и сделать так, чтобы клиент попытался подключиться к любому из этих адресов, если он обнаружен в сети.

Если это невозможно, есть ли другой способ настроить мои настройки так, чтобы мне не приходилось вручную настраивать конфигурацию при перемещении моего ноутбука?

Спасибо!

3 ответа3

1

Я знаю, что это старый пост, но в итоге я написал небольшой bash-скрипт, чтобы обработать его для меня, он, по сути, проходит по вашим 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-секундном кроне так:

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

Это здорово в том смысле, что я могу подключить свой первый серверный ноутбук, а затем отключить питание моего второго серверного ноутбука, и он будет автоматически подключаться без необходимости что-либо делать с клиентским компьютером.

1

(не очень безопасный и надежный, но рабочий старт): использование оболочки,

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

Вы можете сделать что-то подобное в Cygwin или в файле Bat, если вы работаете в Windows. Идея была бы такова: ваш компьютер ищет хост и подключается к нему, если может найти его.

(править) Вы бы хотели запустить это явно, а не запускать в фоновом режиме. Вы не хотите идти в кофейню или аэропорт, и пусть какой-нибудь счастливчик-злоумышленник заберет вашу лапшу в качестве клиента.

0

Этот ответ похож на @ noah-birnel's - но без изменения конфигурации синергии. Это требует 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)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .