(何百ものものがあるので、試した実際のステップについて意図的に不正確です。
CentOS 7、ネットワーク管理者
(以下のエラーは修正してください)
カスタマーエクスペリエンスには、SSIDが同じAPが複数あります。 Linuxボックスを各APに順番にリンクし、コマンドを実行してデータを収集し、次のAPに移動し、クリーニングし、すすぎ、繰り返すBASHスクリプトを作成する必要がありました。 BSSIDは、接続に使用される確かなものです。スクリプトとしてのスクリプトは正常に動作しますが、BSSIDベースのWi-Fi接続ビットは機能しません。
iw、iwconfig、nmcli、およびwpa_supplicantを試しましたが、私が指定したBSSIDに確実に接続できませんでした。接続された実際のBSSIDは、コマンドに何を入力してもランダムであるようです。私が収集したものから、wpa_supplicantを除くすべてのツールは単にBSSIDを取得し、SSIDに関連付けてから、接続設定でSSIDを使用します。正しい場合(直接言うと)少し愚かなようです。
wpa_supplicant はこの方法で使用するには脆弱です。常にwpa_cliが接続できない状態になり、再起動を続行し、NetManagerを再起動する必要があります。
私はPythonに切り替えることを検討しましたが、PythonモジュールはLinuxコマンドを囲むラッパーのようで、何も変更されません。
誰でもアイデアがあれば伝えてください。これが難しすぎると信じられないので、明らかなものが欠けているようです...
以下、Eduardoのソリューションを試しました。
提供された方法では正確に達成できません。 MACアドレス/ BSSIDが変数である(SSIDとパスワード/ pskは静的です)シェルスクリプトで接続試行ループを実行しています。
接続に使用するコマンドは次のとおりです。
nmcli connection up ifname wlp4s0 ap $AP passwd-file passwdfile
ここで passwdfile には psk が含まれています。これは$ APリストを通るループです。
リスト内の任意のAPにまだ接続されています。 (おそらく当時最高の信号を持つ信号です)、(私にとって)もっと混乱しているのは、イベントが次のiw
接続BSSIDを表示することです。
nmcli -f SSID,BSSID,ACTIVE dev wifi list | grep yes
私が正しくしていないという非常に明白な何かがあるでしょう(これは私にとってまだ新しいものです)。
答え1
一般的なASCIIパスワードのみを提供する場合は、wpa_supplicant
SSIDから64桁の16進PSK(実際のパスワードの1つ)が派生するため、SSIDを見つける必要があります。この時点でSSIDモードに入ります。
したがって、解決策はBSSIDを指定し、64個の16進PSKパスワード。
以下を実行して、64桁の16進PSKを取得できます。
wpa_passphrase YourSSID YourAsciiPassword
たとえば、
$ wpa_passphrase Example myexample
network={
ssid="Example"
#psk="myexample"
psk=e22b519be7138dce1d81d1b67b622a720774f22753f79f954376e6e2b722e2c7
}
その後、SSIDの代わりにBSSIDを使用すると、次の結果が表示されます。
network={
bssid=EE:FF:00:01:02:03
psk=e22b519be7138dce1d81d1b67b622a720774f22753f79f954376e6e2b722e2c7
}
これにより、対応するBSSIDに接続できます。
答え2
私のユースケースは少し異なりますが、正しい方向に解決策を提供したEduardo Trapaniに大きな感謝を伝えたいと思います。マイユースケースは、2階のモデムの横にあるネイティブルーターと、私の望遠鏡を制御するRaspberry Pi 5の外側を指す下層のウィンドウにあるNest APを持つGoogle Nestルーターとアクセスポイントのペアです。
Eduardoのソリューションのこの部分は絶対に必要です。
$ wpa_passphrase Example myexample
network={
ssid="Example"
#psk="myexample"
psk=e22b519be7138dce1d81d1b67b622a720774f22753f79f954376e6e2b722e2c7
}
このステップは非常に重要です。しかし、彼がwpa_passphraseコマンドの出力から生成したネットワークフラグメントをどうすべきかわかりません。
network={
bssid=EE:FF:00:01:02:03
psk=e22b519be7138dce1d81d1b67b622a720774f22753f79f954376e6e2b722e2c7
}
それは非常に簡単であることが判明しました。私のシステムのネットワークGUIにネットワークを追加し、BSSID(アクセスポイントのMACアドレス)とパスワード(wpa_passphraseコマンドの出力)を入力しました。実際に働いた。私のmbpsは8から245に増えました!
私の元のネットワークはHannahで、Piはより良い接続を見つける必要がありましたが、何らかの理由で見つかりませんでした。ただし、上記のように定義された2番目のネットワークHannah-2を使用すると、簡単に見つけることができます。