Comment afficher une interface Wi-Fi à partir d'une ligne de commande?

30

Je n'arrive pas à comprendre comment afficher correctement la carte Wi-Fi sur mon ordinateur portable. Quand je l'allume et émets

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

il signale que le réseau est en panne. Essayer de le faire échouer aussi:

$ sudo ifup wlan0
wlan0     no private ioctls.

Failed to bring up wlan0.

Apparemment, il me manque une commande basique de bas niveau iw....

Lorsque je lance dhclientsur l'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$

et l'interrompre, cela amène l'appareil en quelque sorte, puis la numérisation, etc. fonctionne. Je voudrais éviter cette étape manifestement superflue.

Petr Pudlák
la source
Il existe plusieurs interfaces wifi du noyau à l'espace utilisateur. Le iwconfigest obsolète et ne peut pas être configuré dans un noyau moderne. La iwméthode est plus moderne / préférée ( nl80211 ). Les anciens iwconfigpeuvent donner des erreurs bizarres lorsque le support wext n'est pas compilé / configuré. Les outils / scripts que les distributions rendent disponibles sont un autre problème. Je suppose que si vous utilisez une distribution, ils devraient veiller à donner les bons packages / configurations. Si vous créez le vôtre, vous pouvez avoir le problème ci-dessus.
bruit sans artifice

Réponses:

29

En effet, essayez sudo ifconfig wlan0 up. Pour développer la réponse de Martin:

ifupet les ifdowncommandes font partie du package ifupdown , qui est désormais considéré comme un frontal hérité pour la configuration du réseau , par rapport aux plus récents, tels que network manager.

Lors de la ifup ifupdownlecture des paramètres de configuration de /etc/network/interfaces; il fonctionne pre-up, post-upet des post-downscripts à partir /etc/network, qui comprennent le démarrage /etc/wpasupplicant/ifupdown.shque les processus supplémentaires wpa-*options de configuration wpa wifi, dans /etc/network/interfaces (voir la zcat /usr/share/doc/wpasupplicant/README.Debian.gzdocumentation). Pour le wireless-toolspackage WEP joue un rôle similaire à wpa-supplicant. iwconfigvient wireless-toolsaussi.

ifconfigen même temps est un outil de niveau inférieur , qui est utilisé par ifupdownet permet plus de flexibilité. Par exemple, il existe 6 modes de fonctionnement de l'adaptateur wifi et l'IIRC ifupdownne couvre que le mode géré (+ le mode itinérance, qui n'est formellement pas le mode?). Avec iwconfiget ifconfigvous pouvez par exemple activer le mode moniteur de votre carte sans fil, tandis qu'avec ifupdownvous vous ne pourrez pas le faire directement.

Boris Burkov
la source
7
avec debian stretch, ifconfiga été remplacé par ip, la commande alternative estip link set wlan0 up
Ben
11

Essayez ifconfig wlan0 upau lieu de ifup.

Martin von Wittich
la source
4

Voici ce que j'utilise pour me connecter à un point d'accès WEP au quotidien:

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

Vous devrez mettre l'ESSID et le MAC pour le point d'accès que vous souhaitez.

C'est un peu plus difficile pour le cryptage WPA. Vous devez avoir un wpa_supplicant.conffichier avec une entrée appropriée. Comme ça:

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

Une fois que vous avez un tel fichier conf, vous pouvez exécuter ce 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 

Mise à jour, 2014-12-03:

Arch linux étant ce qu'il est, mon script de connexion au WEP est très différent. J'ai pensé l'ajouter à cette réponse pour la garder à jour.

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

J'ai dû passer à l'utilisation iwtrès soudainement. Quelque chose au sujet du noyau Arch LTS ou des pilotes WiFi (mon ordinateur portable a une carte WiFi Intel utilisant le pilote "iwl4965") a changé il n'y a pas si longtemps. Vous devrez modifier la fréquence ("2462") et l'adresse MAC du point d'accès pour que cela fonctionne.

Bruce Ediger
la source
3

Depuis Ubuntu 18.04 (et les versions Debian correspondantes) ifconfiget ifup/ ifdownsont obsolètes, et la façon recommandée de faire apparaître l'interface est avec la ipcommande:

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

Et vous pouvez vérifier vos interfaces disponibles avec:

ip link

Et vous pouvez afficher les adresses IP attribuées à vos interfaces avec:

ip addr show

Ou plus précisément:

ip addr show scope global | grep inet
shellcat_zero
la source