Bash 스크립트에서 wpa_cli set_network 명령 사용 및 이스케이프

Bash 스크립트에서 wpa_cli set_network 명령 사용 및 이스케이프

wpa_supplicant명령줄 인터페이스를 통해 Wi-Fi 네트워크에 연결할 수 있습니다 wpa_cli. wpa_cli작동 모드에는 대화형 모드와 일반 모드의 두 가지가 있습니다. 일반 모드에서는 wpa_cli필수 명령을 인수로 전달해야 합니다.

예를 들어, 네트워크에 연결하려면 루트로 다음 명령을 실행해야 합니다.

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' ' 및 ' 값만 유지하고 싶습니다 .

관련 정보