Detectando computador conhecido em rede pública no BASH

2

Alguém conhece um caminho através do BASH (especificamente o terminal OSX, mas eu prefiro uma solução BASH única sem o OSX 'em funcionalidade integrada) para detectar um computador conhecido em uma rede pública (em que eu também estou localizado)?

Meu pensamento é que, como eu sei o endereço MAC do computador que estou tentando encontrar, posso simplesmente resolver isso para um IP, mas não sei exatamente como resolvo um endereço MAC para um endereço IP local na rede pública usando comandos BASH.

Meu objetivo é configurar uma solução de script que me permita configurar um ícone na área de trabalho que, ao clicar duas vezes, detecte um computador conhecido na rede e seu endereço IP local correspondente, crie um túnel SSH para VNC e em seguida, abre o aplicativo de compartilhamento de tela através do túnel SSH. Essencialmente, clique duas vezes para abrir uma conexão segura de compartilhamento de tela em uma rede pública sem software de terceiros e apenas com as ferramentas disponíveis via BASH e OSX.

Tudo isso acontece dentro da mesma rede Wi-Fi pública. Por exemplo, imagine duas pessoas indo ao mesmo café. Eu quero que a pessoa A verifique o IP da Pessoa B, já que eles já conhecem o endereço IP da Pessoa B.

    
por Thought Space Designs 07.09.2014 / 01:21

4 respostas

1

Eles fazem algo para isso chamado de nome DNS. Se for um servidor público, é mais do que provável que ele tenha um. Se não, então você vai querer fazer o seu próprio, se você já tem um nome DNS em sua organização, basta adicionar um novo registro em seu servidor DNS que especifica um novo subdomínio para aquele servidor. Em geral, todos os servidores públicos usam endereços IP estáticos, embora isso não seja realmente necessário. O IP nunca deve mudar, basta usá-lo. Se o IP estiver mudando, você precisará instalar um cliente de DNS dinâmico no servidor que manterá a entrada DNS atualizada para você automaticamente ou projetará seu próprio sistema (possivelmente um script que mantém seus arquivos host ) atualizado [refiro-me aos arquivos host em cada um de seus clientes; não ao servidor]). Além disso, não há necessidade de se preocupar com IP local versus IP público. Isso é algo que seu roteador sabe gerenciar automaticamente. Contanto que sua tabela de roteamento esteja configurada corretamente, ela encontrará o melhor caminho para o servidor. Se você tiver um roteador doméstico, tudo será tratado automaticamente nos bastidores.

Atualizar

Na verdade, pensei em uma boa solução que funcionasse. Obtenha uma unidade na nuvem, como o Google Drive. Configure-o em ambos os computadores para sincronizar corretamente. Em seguida, faça o outro pc gravar um arquivo na pasta de sincronização que contém o IP local:

echo 'ifconfig eth0 2>/dev/null|awk '/inet addr:/ {print $2}'|sed 's/addr://'' > /home/user/share/pcname_current_ip

Agora, você só precisa ler esse arquivo para encontrar o IP atual desse computador (desde que ambos tenham sido sincronizados, é claro).

    
por 07.09.2014 / 01:33
1

Resposta curta: A coisa mais simples a fazer é provavelmente instalar nos laptops algo como um cliente de atualização de DNS dinâmico para acompanhar seu endereço IP dinâmico quando eles não estiverem em sua Rede local.

Algumas palavras a mais: O problema é que, com apenas o endereço MAC, você é forçado a varrer uma sub-rede para encontrar uma secretária eletrônica com esse endereço MAC depois de ligar para o endereço IP. Outro lado do problema é que esse IP muda cada vez que a máquina remota se conecta a um provedor (ou o ADSL redefine a conexão e atribui um endereço IP diferente).

É mais simples se essa máquina (o laptop) comunicar de alguma forma o IP atual. Uma maneira de fazer isso para usar um cliente de atualização de DNS dinâmico. Existe até mesmo um daemon do Linux ddclient que ajuda com [servidores ip dinâmicos]. ( link )

Depois disso, você escolhe o seu nome (ex: 'myname.AtFreeOrCommercialProvider.org') e habilita no laptop um programa para atualizar o IP, bastará escrever do escritório a linha acima para saber o IP atual do a máquina remota:

host myname.AtFreeOrCommercialProvider.org  

depois você poderá escrevê-lo em seu script e usá-lo como quiser.

Mais palavras no caminho original O núcleo da sua pergunta original é

Eu sei o endereço MAC do computador que estou tentando encontrar, eu poderia simplesmente resolver isso para um IP , mas não tenho certeza exatamente como resolvo um endereço MAC para um endereço IP local na rede pública usando comandos BASH.

Para obter o endereço MAC do endereço IP, você pode usar, por exemplo, um dos seguintes métodos que fornecerá endereços IP e MAC de resposta ao computador na rede:

  1. nbtscan , por exemplo, nbtscan 192.168.1.0-255 varrerá o grupo de endereços IP que você especificar respondendo com endereço IP, nome NetBIOS, servidor, usuário, endereço MAC. (Se 192.168.1.xxx for sua rede local ...)
  2. arp sem especificador de modo imprimirá o conteúdo atual da tabela vizinha de rede IPv4 com endereço IP e MAC.
    Da mesma família de ferramentas sudo arp-scan --interface=eth0 192.168.0.0/24 se você estiver usando uma conexão por cabo ou sudo arp-scan --interface=wlan0 192.168.0.0/24 se estiver usando uma conexão sem fio ...
  3. nmap -sP xxx.xxx.xxx.xxx em todos os seus endereços de rede local e filtrá-los com os endereços MAC conhecidos.
  4. nmblookup se você souber os nomes de NetBIOS ...

Depois disso, você tem na mesma linha o endereço IP e o MAC: você pode escrever seu script. Algumas dessas ferramentas podem precisar ser instaladas.

PS > Você pode saber seu endereço IP atual de

# if you are using a cable connection on the network ineterface eth0
sbin/ifconfig eth0 | grep -E "inet:" | awk '{print $2}' | sed s/"inet:"//g
# or you are using a wireless connection on the network ineterface wlan0
sbin/ifconfig wlan0 | grep -E "inet:" | awk '{print $2}' | sed s/"inet:"//g

PPs > IMHO não é tão legal ou eficiente para varrer toda a internet apenas para saber se esse computador específico está conectado ... É um caso diferente se você conectar este computador a uma LAN ou uma rede privada virtual (com menos IP a ser verificado é possível) ...: -)

    
por 07.09.2014 / 13:25
0

Que tal configurar sua própria rede sem fio ad-hoc em um dos PCs e encaminhar o tráfego de outros PCs através dele. Seguro e sem necessidade de rastreamento IP de terceiros ...

    
por 10.09.2014 / 01:36
-1

A maneira mais simples de conseguir isso é com o logmein ou o visualizador de equipe. Sim, seu terceiro, mas funcionaria muito simplesmente.

    
por 11.09.2014 / 17:11