varrer o dispositivo sem fio no ubuntu 14.04

0

Estou procurando um comando para procurar qualquer dispositivo sem fio conectado ao meu computador.

Meu computador tem um problema que o dispositivo wireless é desconectado se eu colocar minha mão em alguma parte dele, então eu tenho que reiniciar o computador para encontrar o dispositivo sem fio novamente. Existe algum comando no linux que procura por dispositivos sem fio conectados que eu possa apenas reconectar o dispositivo sem fio?

    
por mmostajab 06.12.2014 / 12:34

2 respostas

2

TR; DR: use nmcli dev status para obter uma lista de quais interfaces estão conectadas à rede e use ping google.com -c 4 -I ifacex (onde ifacex é o nome real da interface com o número) para testar se eles estão realmente conectados. Para reconectar as interfaces sem fio nmcli nm wifi off; sleep 1; nmcli nm wifi on e permitir a reconexão automática.

A maneira mais simples de fazer isso é através de nmcli dev status . Este comando gera a lista de interfaces disponíveis em seu sistema e informa se elas estão conectadas ou não. Exemplo de saída do meu sistema

DEVICE     TYPE              STATE        
eth0       802-3-ethernet    unavailable  
wlan0      802-11-wireless   connected 

Se quiser listar apenas os dispositivos que o estado está conectado, faça %código%. Aqui, combinamos apenas as linhas que têm 'connected' string e imprimem seu nome. No meu caso, daria apenas nmcli dev status | awk '/connected/ {print $1}' . Se você tivesse eth0 e wlan0 conectados, a saída da amostra seria

wlan0

eth0

Agora, no meu gerenciador de rede do sistema é meio buggy. Pode relatar o dispositivo como conectado, mas na realidade ele é desconectado. Você pode testar a interface wlan0 com wlan0 . Isso envia 4 pacotes para ping google.com -c 4 -I wlan0 da interface wlan0. Agora eu também poderia fazer google.com , que irá obter o nome da minha interface wlan0 e colocar no final do comando ping como -I argumento. Exemplo de saída

PING google.com (216.58.217.46) from 192.168.0.68 wlan0: 56(84) bytes of data.
64 bytes from den03s10-in-f14.1e100.net (216.58.217.46): icmp_seq=1 ttl=57 time=44.0 ms
64 bytes from den03s10-in-f14.1e100.net (216.58.217.46): icmp_seq=2 ttl=57 time=40.0 ms
64 bytes from den03s10-in-f14.1e100.net (216.58.217.46): icmp_seq=3 ttl=57 time=48.0 ms
64 bytes from den03s10-in-f14.1e100.net (216.58.217.46): icmp_seq=4 ttl=57 time=40.0 ms

--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3016ms
rtt min/avg/max/mdev = 40.000/43.000/48.000/3.316 ms

Muitas vezes, os utilizadores podem ter problemas de DNS, o que significa que a sua máquina não consegue traduzir o google.com para o endereço IP real (os computadores lidam apenas com endereços IP, como telefones que apenas lidam com números de telefone). Nesse caso, é melhor você executar nmcli dev status | awk '/connected/ {print $1}' | xargs ping google.com -c 4 -I , onde ele testará se sua máquina tem conexão com a Web E resolve os nomes de domínio.

Agora, e se você tiver mais de uma interface conectada? Pessoalmente eu testaria cada interface com ping separadamente, sem depender desse one-liner, mas como estou me divertindo muito com o script recentemente, aqui está outro one-liner:

ping 8.8.8.8 -c 4 -I wlan0 && ping google.com -c 4 -I wlan0

Este, basicamente, encontra nomes de interfaces conectadas e executa o comando ping com cada uma delas. Como eu não tenho vários dispositivos conectados, vou mostrar como fica quando o awk obtém cada item da primeira coluna, então note que a primeira saída será errada, a segunda será eth0 e a terceira será wlan0 nmcli dev status | awk '/connected/ {print $1}' | xargs -n 1 ping google.com -c 4 -I

ping: SO_BINDTODEVICE: Invalid argument
ping: Warning: source address might be selected on device other than eth0.
PING google.com (216.58.217.46) from 192.168.0.68 eth0: 56(84) bytes of data.
From sergiy-Satellite-L455D.local (192.168.0.68) icmp_seq=1 Destination Host Unreachable
From sergiy-Satellite-L455D.local (192.168.0.68) icmp_seq=2 Destination Host Unreachable
From sergiy-Satellite-L455D.local (192.168.0.68) icmp_seq=3 Destination Host Unreachable
From sergiy-Satellite-L455D.local (192.168.0.68) icmp_seq=4 Destination Host Unreachable

--- google.com ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3152ms
pipe 3
PING google.com (216.58.217.46) from 192.168.0.68 wlan0: 56(84) bytes of data.
64 bytes from den03s10-in-f14.1e100.net (216.58.217.46): icmp_seq=1 ttl=57 time=44.0 ms
64 bytes from den03s10-in-f14.1e100.net (216.58.217.46): icmp_seq=2 ttl=57 time=48.0 ms
64 bytes from den03s10-in-f14.1e100.net (216.58.217.46): icmp_seq=3 ttl=57 time=40.0 ms
64 bytes from den03s10-in-f14.1e100.net (216.58.217.46): icmp_seq=4 ttl=57 time=40.0 ms

--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3016ms
rtt min/avg/max/mdev = 40.000/43.000/48.000/3.316 ms

E como deveria, vemos que a eth0 está desconectada, wlan0 está conectada.

Outra coisa que você pode usar é nmcli dev status | awk '{print $1}' | xargs -n 1 ping google.com -c 4 -I . Esse cara te dá um longo relatório sobre cada uma das suas interfaces, com configurações. Poderíamos reduzir isso apenas para a lista de interfaces e seus status com nm-tool . Aqui nós substituímos o caractere chato por espaço, e pegamos o texto das strings Device to State.

Device: eth0
Type: Wired
Driver: r8169
State: unavailable
Device: wlan0
Type: 802.11
Driver: r8180
State: connected

O que mais? nm-tool | tr '-' ' ' | awk '/Device/,/State/ {print $1,$2}' , whois e nslookup são utilitários de pesquisa para nomes de domínio e endereços IP. Se você puder usá-los para descobrir informações sobre um domínio ou endereço IP, você está conectado. Eles não vão te dizer a interface, mas sim testar a conectividade.

Em conclusão : há mais de uma maneira de esfolar um gato, como você sabe. O primeiro comando dig e nmcli dev status é tudo o que você realmente precisa para testar suas conexões, e o ping é o "verdadeiro MVP" em qualquer sistema, por assim dizer. Agora, se você quiser ficar chique, aprenda alguns truques de linha de comando, por todos os meios, estude os one-liners que eu postei aqui! O poder do Ubuntu e Linux em geral está na linha de comando

Additions :

Outros notaram que reiniciar o gerenciador de rede com ping fará o trabalho na maioria das vezes. Por padrão, todas as conexões são configuradas para serem autoconectadas quando o gerenciador de rede estiver no intervalo. Eu uso muito esse método!

O que mais pode ser feito? %código%. Isso desligará o Wi-Fi, fará uma pausa por um segundo e ligará novamente o Wi-Fi; e sua rede deve se reconectar automaticamente.

    
por Sergiy Kolodyazhnyy 11.04.2015 / 23:35
0

Eu estou supondo que você tenha um dispositivo Wi-Fi USB? Eu só pergunto isso porque é estranho perder o dispositivo no sistema operacional ao tocá-lo fisicamente.

De qualquer forma, você tentou desativar / ativar a rede com a GUI? Esse é o primeiro passo mais simples para tentar. Clique no ícone de sinal de rede no canto superior direito próximo ao seu relógio e desmarque a opção Habilitar Rede . Dê um minuto, clique no ícone de sinal de rede novamente e verifique novamente a opção Habilitar Rede , novamente dê um tempo para recuperar o atraso. Veja se você pode se reconectar à sua rede sem fio.

Se isso não funcionar, abra uma janela de terminal e digite o seguinte comando:

sudo service network-manager restart

Isso deve forçar o NM a parar e reiniciar completamente, e seu adaptador wi-fi pode aparecer novamente.

Se qualquer um deles não ajudar, quando você perder a conexão com seu adaptador wifi, abra o terminal e execute o seguinte comando, edite sua pergunta e publique os resultados:

ifconfig

Isso deve mostrar se o seu dispositivo está sendo visto ou não quando você perder a conexão.

Supondo que seja um adaptador USB ... você pode usar outros dispositivos USB no mesmo slot ou eles enfrentam o mesmo problema?

    
por JWilliamson 06.12.2014 / 15:41