(何百ものものがあるので、試した実際のステップについて意図的に不正確です。
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に接続できます。