web-dev-qa-db-ja.com

コマンドラインからWi-Fiインターフェイスを起動する方法

ラップトップで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$

それを中断すると、デバイスが何らかの形で起動し、スキャンなどが機能します。この明らかに余分なステップは避けたいです。

32
Petr Pudlák

Sudo ip link set wlan0 upまたはSudo ifconfig wlan0 up


17年4月13日からの回答:

マーティンの答えを詳しく説明するには:

ifupおよびifdownコマンドは ifupdownパッケージ の一部です。これは現在 ネットワーク構成のレガシーフロントエンドと見なされます 、新しいものと比較して、 network managerなど。

ifupのときifupdown/etc/network/interfacesから構成設定を読み取ります。 pre-upからのpost-uppost-down/etc/networkスクリプトを実行します。これらには、wpa wifiの追加の/etc/wpasupplicant/ifupdown.sh構成オプションを処理する開始wpa-*が含まれています。 /etc/network/interfaces(ドキュメントはzcat /usr/share/doc/wpasupplicant/README.Debian.gzを参照)。 WEPの場合、wireless-toolsパッケージはwpa-supplicantと同様の役割を果たします。 iwconfigwireless-toolsからです。

ifconfigと同時に 下位レベルのツール は、ifupdownによって使用され、より柔軟に使用できます。たとえば、wifiアダプターの機能には6つのモードがあり、IIRC ifupdownは管理対象モード(+ローミングモード、正式にはモードではない?)のみをカバーします。 iwconfigifconfigを使用すると、 有効にできます となります。 モニターモード ワイヤレスカードの場合、ifupdownを使用すると、それを直接行うことはできません。

ipコマンドは netlink sockets の上で動作する新しいツールです。これは、ユーザー空間からカーネルネットワークスタックを構成する新しい方法です(ifconfigのようなツールが上に構築されています) ioctl システムコール)。

31
Boris Burkov

ifupではなくifconfig wlan0 upを試してください。

12

Ubuntu 18.04(および対応するDebianバージョン)以降、ifconfigおよびifup/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
_
4
shellcat_zero

これは、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とは何なのか、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アドレスを変更する必要があります。

4
Bruce Ediger