起動時にUSBドライブからWi-Fi SSIDとパスワードを読み取り、自動的にWi-Fiネットワークにログインするスクリプトを作成する方法

起動時にUSBドライブからWi-Fi SSIDとパスワードを読み取り、自動的にWi-Fiネットワークにログインするスクリプトを作成する方法

Debian を実行する組み込みシステムがあります。 USBサムドライブを介してWi-FiネットワークSSIDとパスワード情報を提供したいと思います。これにより、すべてのWi-Fiネットワークに簡単に展開できます。

起動時にスクリプトがUSBドライブからWi-Fi SSIDとパスワードを読み、Wi-Fiネットワークに自動的に接続できるようにすることはできますか?誰もがこれを行うスクリプトを持っていますか?

これを達成するより良い方法はありますか?

答え1

Perlを使用してスクリプトを実行するアイデアは次のとおりです。お好みの言語、たぶんbashに翻訳することができます。本当に重要なのは、ワイヤレスに接続するためのコマンドです。 Perlは私がこれをすばやく実行するための手段に過ぎません。 Perlを読むのに慣れていない場合は、すべてのバックティックがシェルコマンドであることに注意してください。

たとえば、Gnomeにはネットワーク記憶処理機能が組み込まれており、ログインしているユーザーに対してこれを行いますが...ヘッドレス設定を想定しています。以下は、自動的にWi-Fiに接続する興味深いモバイルヘッドレス設定です。クール。

これは、wpaネットワークがあり、iwconfig(ワイヤレスパッケージに付属)とwpa_supplicantがインストールされていると仮定します。

これはcsvで定義された1つのネットワークのみを示しています。そしてそれが最初の試みで動作すると仮定します。必要なネットワークの実際のパラメータを使用して具体化するか、別の処理を追加する必要があります。しかし、この一般的な構造はすぐに完了します。

File@/mnt/usb/network.csv形式は「ターゲットSSID、パスワード」です。

myWifiSSID,mypassword

ファイル@ /home/me/connect.pl(例:chmod 755):

#!/usr/bin/perl
# Set to your device name.
$iface = "wlan0";

# Set to your USB mount point & network definition CSV file.
$networkdefinition = "/mnt/usb/network.csv";

# Get the contents of your file on USB stick.
$line = `cat $networkdefinition`;

# Read the CSV into parts.
@parts = split(/,/,$line);

# Get a list of wireless networks in range.
# And grep that for the network we're looking for.
$foundnetworks = `iwlist $iface scan | grep 'ESSID:"$parts[0]"'`;

# See if this turns up the network we're looking for
if (length($foundnetworks)) {
        # It did. Let's bring up that interface.                    
        `wpa_supplicant -B -i $iface -c <(wpa_passphrase $parts[0] $parts[1])`;
} else { 
        # Network not in range, perform error handling etc.
}

クローンタブから:

@reboot /home/me/connect.pl

指示:

  • より良いエラー処理/より一般的な実行方法が必要です。
  • WPA以外のネットワークを処理する必要がある
  • Cronソリューションはそれまでインストールが可能であると仮定します。

これは進行中に拡張するのが面白いですが、USBスティックCSVファイルを使用してWiFiネットワークを指定するクイックスタート方法かもしれません。

実際の鍵は、次の2つのコマンドです。

  • iwconfig
  • wpa_supplicant

残りは、WiFi APに自動的に接続する提案されたソリューションを実装する方法のアイデアです。

関連情報