Bashスクリプトでwpa_cli set_networkコマンドを使用してエスケープする

Bashスクリプトでwpa_cli set_networkコマンドを使用してエスケープする

wpa_supplicantコマンドラインインターフェイスを介してWi-Fiネットワークに接続できますwpa_cliwpa_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 ssidset_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''と '値だけを維持したいです。

おすすめ記事