Wpa-Supplicant

wpa_cli:互動式 shell 工作,單個命令失敗?

  • May 14, 2021

我正在嘗試使用 wpa_cli 連接到 wifi。我跑$ wpa_cli add_network了,回來了0,跑了$ wpa_cli set_network 0 ssid "my ssid"。但這失敗了。然後我嘗試了互動式shell,執行set_network 0 ssid "my ssid"並獲得了OK?不應該都失敗或執行正常嗎?為什麼只有一個失敗?

shell 做了一些叫做分詞的事情(你可以詳細閱讀)。對於大多數情況(以及您的情況),這意味著在命令行上,如果您想將一小組特殊字元中的任何一個傳遞給程序,您必須保護它們。為了保護它們,您必須在它們前面加上反斜杠 ( \) 或用引號將相關文本括起來。

旁注:單引號在某種意義上“更強”,因為其中沒有字元具有特殊含義。雙引號允許某些字元在內部保留其特殊含義。

正如您可能從“分詞”這個名稱中猜到的那樣,當您想將其傳遞給程序時,空白是您需要保護的事情之一。但是從上面的引用規則可以看出,引號和反斜杠也需要受到保護。

問題是 wpa_cli 期望在 SSID 周圍有(雙?)引號,但你的會被外殼“吃掉”,因為它們沒有受到保護。現在用wpa_cli set_network 0 ssid '"my ssid"'單引號保護雙引號, wpa_cli 命令被"my ssid"視為它的第四個參數。

引用自:https://unix.stackexchange.com/questions/649175