
wpa_supplicant
コマンドラインインターフェイスを介してWi-Fiネットワークに接続できますwpa_cli
。wpa_cli
動作モードには、インタラクティブモードとノーマルモードの2つがあります。通常モードでは、wpa_cli
必須コマンドを引数として渡す必要があります。
たとえば、ネットワークに接続するには、rootとして次のコマンドを実行する必要があります。
wpa_cli add_network
> 0 # this is the new network's ID
wpa_cli set_network 0 ssid '"SSID_HERE"'
wpa_cli set_network 0 psk '"PASSPHRASE_HERE"'
wpa_cli enable_network 0
これらの操作はすべてスクリプトで作成できます。ただし、SSIDとパスワードは両方とも一重引用符でエスケープする必要wpa_cli
がありますset_network ssid
。set_network psk
そして次のように二重引用符:'"ssid"'
。
ただし、ssidを変数の値に置き換えると、スクリプトはこのエスケープ形式に従うのが難しく、wpa_cliはOKの代わりにFAIL終了状態を返し続けます。次のパターンが試行されました。
ssid '"$ssid"' # doesn't work, sets SSID to "$ssid" instead of $ssid's value
ssid \'"$ssid"\' # doesn't work
だから私の質問:ssidをスクリプトの変数に入れ、それをパラメータとして使用してwpa_cliにSSID /パスワードを提供するにはどうすればよいですか?
答え1
次のパターンが私に適していますが、安全かどうかはわかりません。
wpa_cli set_network 0 ssid '"'$ssid'"'
$ssid
''と '値だけを維持したいです。