如何从命令行启动Wi-Fi接口?


30

我不知道如何在笔记本电脑上正确调出Wi-Fi卡。当我打开它并发出

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

它报告网络已关闭。尝试提出它也失败了:

$ sudo ifup wlan0
wlan0     no private ioctls.

Failed to bring up wlan0.

显然,我缺少一些基本的底层iw...命令。

当我dhclient在界面上发出命令时:

$ 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$

并中断它,它将设备以某种方式启动,然后进行扫描等工作。我想避免这一明显多余的步骤。


从内核到用户空间都有多个wifi接口。在iwconfig已被弃用,不得被配置到现代性的核心。该iw方法更为现代/首选(nl80211)。iwconfig如果未对wext支持进行编译/配置,则Older 可能会给出更奇怪的错误。发行版提供哪些工具/脚本是另一个问题。我想如果您使用发行版,他们应该注意提供正确的软件包/配置。如果您自己构建,则可能存在上述问题。
artless噪音

Answers:


29

确实,请尝试sudo ifconfig wlan0 up。详细阐述马丁的答案:

ifupifdown命令是ifupdown软件包的一部分,与较新的软件包相比ifupdown软件包现在被认为是网络配置的传统前端network manager

一旦ifup ifupdown从读出的配置设置/etc/network/interfaces; 它运行pre-uppost-up并且post-down脚本来自/etc/network,其中包括开始/etc/wpasupplicant/ifupdown.sh处理wpa-*wpa wifi的其他配置选项/etc/network/interfaces (请参阅参考资料zcat /usr/share/doc/wpasupplicant/README.Debian.gz)。对于WEP wireless-tools包,它起着类似的作用wpa-supplicantiwconfig也来自wireless-tools

ifconfig同时是一个较低级别的工具,它由ifupdown并使用,可以提供更大的灵活性。例如,WiFi适配器有6种模式,而IIRC ifupdown仅涵盖托管模式(+漫游模式,正式不是模式?)。随着iwconfigifconfig可以启用例如监控模式无线网卡,同时与ifupdown你将不能够直接做到这一点。


7
用debian Stretch ifconfig代替ip,替代命令为ip link set wlan0 up
Ben


4

这是我每天用来连接到WEP接入点的方法:

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

您必须为所需的任何接入点输入ESSID和MAC。

WPA加密有点困难。您必须有一个wpa_supplicant.conf带有适当条目的文件。像这样:

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

一旦有了这样的conf文件,就可以运行以下脚本:

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

更新,2014-12-03:

Arch Linux是什么,我的connect-to-WEP脚本有很多不同。我想将其添加到此答案中以保持最新。

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

我不得不iw突然转用。不久前更改了有关Arch LTS内核或WiFi驱动程序(我的笔记本电脑具有使用“ iwl4965”驱动程序的Intel WiFi卡)的内容。您必须更改接入点的频率(“ 2462”)和MAC地址才能使其正常工作。


3

从Ubuntu 18.04(和对应的Debian版本)开始,ifconfigifup/ ifdown已被弃用,建议使用以下ip命令来显示该界面:

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

您可以使用以下方法检查可用接口:

ip link

您可以使用以下命令显示接口分配的IP地址:

ip addr show

或更具体地说:

ip addr show scope global | grep inet
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.