Como abrir uma interface wi-fi a partir de uma linha de comando?

30

Não consigo descobrir como exibir corretamente o cartão wi-fi no meu laptop. Quando eu ligo e emito

$ sudo iwconfig wlan0 txpower auto
$ sudo iwlist wlan0 scan
wlan0     Interface doesn't support scanning : Network is down

relata que a rede está inoperante. Tentando trazê-lo à tona também falha:

$ sudo ifup wlan0
wlan0     no private ioctls.

Failed to bring up wlan0.

Aparentemente, estou perdendo algum iw...comando básico de baixo nível .

Quando emito dhclientna interface:

$ sudo dhclient -v wlan0
Internet Systems Consortium DHCP Client 4.2.2
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

^C$

e interrompê-lo, ele exibe o dispositivo de alguma forma e, em seguida, a digitalização etc. funciona. Eu gostaria de evitar esse passo obviamente supérfluo.

Petr Pudlák
fonte
Existem várias interfaces wifi do kernel para o espaço do usuário. O iwconfigestá obsoleto e não pode ser configurado em um kernel moderno. O iwmétodo é mais moderno / preferido ( nl80211 ). Mais antigos iwconfigpodem gerar erros estranhos quando o suporte ao wext não é compilado / configurado. Quais ferramentas / scripts as distribuições disponibilizam é ​​outro problema. Eu acho que se você usar uma distribuição, eles devem ter o cuidado de fornecer os pacotes / configurações corretos. Se você criar seu próprio, poderá ter o problema acima.
ruído artless

Respostas:

29

De fato, tente sudo ifconfig wlan0 up. Para elaborar a resposta de Martin:

ifupe os ifdowncomandos fazem parte do pacote ifupdown , que agora é considerado um front-end herdado para configuração de rede , em comparação com os mais novos, como network manager.

Após ifup ifupdownler as definições de configuração de /etc/network/interfaces; ele é executado pre-up, post-upe post-downscripts /etc/network, que incluem começando /etc/wpasupplicant/ifupdown.shque os processos adicionais wpa-*opções de configuração para WPA wifi, em /etc/network/interfaces (veja zcat /usr/share/doc/wpasupplicant/README.Debian.gza documentação). Para o wireless-toolspacote WEP , desempenha um papel semelhante ao wpa-supplicant. iwconfigé de wireless-toolstambém.

ifconfigao mesmo tempo, é uma ferramenta de nível inferior , que é usada ifupdowne permite mais flexibilidade. Por exemplo, existem 6 modos de funcionamento do adaptador wifi e o IIRC ifupdowncobre apenas o modo gerenciado (+ modo de roaming, que formalmente não é o modo?). Com iwconfige ifconfigvocê pode ativar, por exemplo, o modo de monitor da sua placa sem fio, enquanto ifupdownvocê não poderá fazer isso diretamente.

Boris Burkov
fonte
7
com debian stretch, ifconfigfoi substituído por ip, o comando alternativo éip link set wlan0 up
Ben
11

Tente em ifconfig wlan0 upvez de ifup.

Martin von Wittich
fonte
4

Aqui está o que eu uso para conectar-me a um ponto de acesso WEP diariamente:

#!/bin/bash

DEV=$(iw dev | awk '/Interface/ {interf=$2} END {print interf}')
PIDFILE=/var/run/dhcpcd-$DEV.pid


if [[ -f $PIDFILE ]] && kill -0 $(cat /var/run/dhcpcd-$DEV.pid)
then
    dhcpcd -k $DEV
fi

ifconfig $DEV down
sleep 1
iwconfig $DEV mode managed
iwconfig $DEV  key blabfoobar
ifconfig $DEV up
iwconfig $DEV essid 'Unindicted Co-conspirator'
iwconfig $DEV ap 00:0D:51:EB:E5:1E

sleep 5
dhcpcd --noipv6rs --noarp $DEV

Você precisará inserir o ESSID e o MAC para qualquer ponto de acesso que desejar.

É um pouco mais difícil para a criptografia WPA. Você precisa ter um wpa_supplicant.confarquivo com uma entrada apropriada. Como isso:

# Simple case: WPA-PSK, PSK as an ASCII passphrase, allow all valid ciphers
network={
    ssid="FaveCoffeeHouse"
    psk="cafe241800"
    priority=1
}

Depois de ter esse arquivo conf, você pode executar este script:

#!/bin/bash

DEV=$(iw dev | awk '/Interface/ {print $2}')

ifconfig $DEV down
iwconfig $DEV mode managed
ifconfig $DEV up
iwconfig $DEV essid 'FaveCoffeeHouse'
iwconfig $DEV ap 00:21:1e:3d:2a:80

echo now run: wpa_supplicant -Dnl80211 -i$DEV -c./wpa_supplicant.conf 

Atualização, 03/12/2014:

Sendo o arch linux o que é, meu script connect to WEP é muito diferente. Pensei em adicioná-lo a esta resposta para mantê-lo atualizado.

#!/bin/bash

DEV=wlp12s0

if [[ -f /run/dhcpcd-$DEV.pid ]]
then
        kill -QUIT $(cat /run/dhcpcd-$DEV.pid)
fi

ifconfig $DEV down
iw dev $DEV set type managed
ifconfig $DEV up
sleep 2

iw dev wlp12s0 connect -w 'Akond of Swat' 2462 00:7c:41:eb:e5:1e key 0:befedade

sleep 15

dhcpcd -4 --nohook 10-wpa_supplicant --noarp --noipv6rs $DEV

Eu tive que mudar para usar iwmuito de repente. Algo no kernel do Arch LTS ou nos drivers WiFi (meu laptop possui uma placa Intel WiFi usando o driver "iwl4965") mudou há pouco tempo. Você precisará alterar a frequência ("2462") e o endereço MAC do ponto de acesso para que isso funcione.

Bruce Ediger
fonte
3

A partir do Ubuntu 18.04 (e versões correspondentes do Debian) ifconfige ifup/ ifdownestão obsoletas, e a maneira recomendada de abrir a interface é com o ipcomando:

ip link set dev <interface> up
ip link set dev <interface> down

E você pode verificar suas interfaces disponíveis com:

ip link

E você pode mostrar os endereços IP atribuídos das suas interfaces com:

ip addr show

Ou mais especificamente:

ip addr show scope global | grep inet
shellcat_zero
fonte