Como identificar a rede local à qual você está conectado

1

Eu preciso de um script para poder identificar se o computador está conectado à minha rede doméstica, à minha rede de trabalho, ou a uma rede diferente, seja por wi-fi ou por cabo.

Minha pergunta é se há algum identificador de rede disponível e como obtê-lo de dentro de um script de shell.

    
por Esteban Crespi 18.10.2013 / 23:17

3 respostas

2

Sua casa, trabalho e assim por diante são diferenciados por diferentes IPs públicos , para que você possa usar qualquer comando CLI que retorne seu endereço IP público e aja de acordo com o resultado desses comandos.

Qualquer um desses comandos funcionará em uma distribuição normal do Linux, estou certo de que o wget existe no Cygwin, eu simplesmente não sei sobre o curl e o lynx:

wget -q -O - ipecho.net/plain
curl ipecho.net/plain
lynx --dump ipecho.net/plain

Atuar em seu endereço público tem a vantagem adicional de poder distinguir uma LAN diferente usando a mesma sub-rede que seu trabalho / casa / sei lá do seu trabalho / casa / ..., caso você leve seu laptop para um novo local .

    
por 19.10.2013 / 09:57
3

Se houver um comando simples para fazer isso, não estou ciente disso. O que pode funcionar é o seguinte:

wireless=<put name of wireless card here, e.g. wlp2s0>
wired=<put name of wired network adapter here, e.g. p1p1>
dev=$(ip route | grep default | awk '{print$5}') #finds the device that your Internet is coming through
if [ x$dev = x$wired ]; then
    echo "Wired connection."
elif [ x$dev = x$wireless ]; then
    echo -n "Wireless connection: "
    iwconfig $wireless 2>&1 | grep ESSID | sed 's@.*ESSID:\"\(.*\)".*@@' # prints ESSID of wireless connection only
fi

Isso deve funcionar, desde que você não esqueça de preencher as variáveis com fio / sem fio.

EDITAR Você definitivamente deve dizer que está executando o cygwin no Windows. Este script provavelmente não funcionará no cygwin. Eu nunca usei o cygwin, então não sei o nível em que ele imita o Linux. Se esse script não funcionar, você está sem sorte (eu acho).

    
por 18.10.2013 / 23:36
-1

As máscaras de sub-rede são diferentes com base em qual rede você se conecta? Sua casa será 255.255.255.0 enquanto seu trabalho sairá do VLSM com 255.255.255.254 ou menos.

Verifique via linha de comando no Windows com ipconfig e verifique a máscara de sub-rede com ifconfig para o Linux.

Outra maneira de saber seria o DNS resolver a partir do seu computador e ver o que DNS pega, é o seu ISP que você usa em casa ou os servidores DNS no domínio do seu escritório? Isso também diria a você, eu quero dizer uma olhada em suas tabelas de roteamento também.

Verifique isso e veja se suas primeiras rotas são de dentro do domínio de suas empresas, execute isso no prompt de comando. Encontre o prompt de comando, abra-o e digite:

netstat -f

 TCP    10.0.0.145:56433       stackoverflow.com:http  ESTABLISHED  
 TCP    10.0.0.145:56462       stackoverflow.com:http  ESTABLISHED   
 TCP    10.0.0.145:56592       stackoverflow.com:http  ESTABLISHED
 TCP    10.0.0.145:56748       stackoverflow.com:http  ESTABLISHED
 TCP    10.0.0.145:56782       stackoverflow.com:http  ESTABLISHED
 TCP    10.0.0.145:56902       stackoverflow.com:http  ESTABLISHED
 TCP    10.0.0.145:56949       stackoverflow.com:http  ESTABLISHED
 TCP    10.0.0.145:57056       stackoverflow.com:http  ESTABLISHED

O exemplo acima mostra onde estamos agora, os IPs foram resolvidos por causa de nosso -f para este site que deveria ser. Alguém disse que você está executando o Cygwin no ambiente do Windows. Por que você não adiciona o diretório "cygwin \ bin" ao caminho do Windows? Você terá acesso total à maioria das ferramentas GNU e poderá usá-las da mesma maneira que no Linux.

    
por 19.10.2013 / 03:20