O cliente Synergy pode ser configurado para se conectar a um dos muitos servidores?

2

Eu tenho um laptop que uso em casa e no escritório. Eu também tenho computadores desktop (com teclados e mouses conectados) instalados em ambos os locais. Ambos os desktops são configurados como servidores Synergy para que eu possa compartilhar seus dispositivos de entrada com o laptop.

Quando chego em qualquer local, preciso reconfigurar o laptop para se conectar à área de trabalho nesse local. Isso sempre envolve alterar o endereço IP ao qual o laptop tenta se conectar.

Seria particularmente útil se eu pudesse inserir uma lista de endereços de servidores na configuração do cliente e fazer com que o cliente tente uma conexão com qualquer um desses endereços, se ele for descoberto na rede.

Se isso não for possível, há outra maneira de configurar minha configuração para que eu não tenha que continuar ajustando manualmente a configuração quando eu realocar meu laptop?

Obrigado!

    
por Pryo 03.02.2014 / 15:28

3 respostas

1

(não muito seguro e robusto, mas um começo de trabalho): usando shell,

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

Você pode fazer algo semelhante no cygwin ou em um arquivo bat se estiver executando o Windows. A ideia seria: fazer com que o seu computador procure o host e conectar-se a ele se puder encontrá-lo.

(edit) Você gostaria de executar isso explicitamente, e não executá-lo em segundo plano. Você não quer entrar em um coffeeshop ou aeroporto e ter algum estranho maligno sortudo levando sua lappy como cliente.

    
por 20.02.2014 / 21:13
1

Eu sei que este é um post antigo, mas acabei escrevendo um pequeno script bash para lidar com este para mim, ele essencialmente faz o loop de seus IPs até que um com uma porta de sinergia ativa esteja disponível e tente se conectar com o --no-restart flag, portanto, se a conexão for redefinida, poderá reiniciar o processo.

Gist aqui: link

Ou codifique aqui:

#!/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

Eu corri em um cron de 15 segundos assim:

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

É ótimo no sentido de que posso conectar meu primeiro laptop de servidor e desconectar o segundo laptop do servidor e ele se conectará automaticamente sem precisar fazer nada com o computador cliente.

    
por 04.08.2016 / 08:33
0

Esta resposta é semelhante à do @ noah-birnel - mas sem alterar como a sinergia é configurada. Isso requer, no entanto, o Linux.

Faça um script ser executado como root ao longo dessas linhas. Isto pode ser agendado (cron) ou colocado como um gancho na configuração de rede (linha de post-up na distro estilo Debian, ou um serviço de rede systemd customizado / etc)

Ao testar, faça backup do arquivo de hosts para que você saiba que não está causando quebras irreversíveis.

#!/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

Se você quiser nomes de host no script em vez de endereços IP, será necessário expandir o script para obter o endereço IP. Como alternativa, qualquer método pelo qual você poderia obter um nome de host "dinâmico" funcionará (por exemplo, host dnsmasq no cliente e fazer com que o script atualize os registros DNS internos)

    
por 03.03.2016 / 08:11