WPA_passphrase 출력을 /etc/network/interface로 변환

WPA_passphrase 출력을 /etc/network/interface로 변환

이것은 대부분 제가 잘 파악하지 못한 형식 문제입니다.

wpa-passphrase의 출력을 /etc/network/interfaces가 사용할 수 있는 형식으로 변환하는 bash 함수나 스크립트를 만들고 싶습니다.

WPA 신청자 예

wpa_passphrase ssid password

다음 출력을 생성합니다

network={
    ssid="MYSSID"
    #psk="passphrase"
    psk=ccb290fd4fe6b22935cbae31449e050edd02ad44627b16ce0151668f5f53c01b
}

이 출력을 /etc/network/interfaces에서 사용할 수 있는 형식으로 변환해야 합니다.

/etc/network/interface 출력 형식 예:

auto wlan0
iface wlan0 inet dhcp
        wpa-ssid MYSSID
        wpa-psk ccb290fd4fe6b22935cbae31449e050edd02ad44627b16ce0151668f5f53c01b

나의 첫 번째 대략적인 해결책은 다음을 사용하는 것입니다.

wpa_passphrase MYSSID PASSWORD |grep -E 'ssid|psk' |grep -v "#psk" |cut -d '=' -f 2

이것은 나에게 다음을 제공합니다:

MYSSID
ccb290fd4fe6b22935cbae31449e050edd02ad44627b16ce0151668f5f53c01b

하지만 /etc/network/interfaces 형식에서 각 줄을 올바른 위치에 배치하는 방법을 모르겠습니다.

업데이트: 현재 솔루션 사용

추가 시도 끝에 다음과 같이 작동하도록 만들었습니다.

while read line
do
        echo "auto wlp3s0"
        echo "iface wlp3s0 inet dhcp"           
        echo -e "\t wpa-ssid $line"
done < <(sudo wpa_passphrase $1 $2 |grep -E 'ssid' |cut -d '=' -f 2)

while read line
do
        echo -e "\t wpa-psk $line"
done < <(sudo wpa_passphrase $1 $2 |grep -E 'psk' |grep -v "#psk" |cut -d '=' -f 2)

내 솔루션은 필요한 출력을 제공하지만 효율적이지 않아 보이며 여전히 다른 솔루션을 보고 싶습니다.

답변1

다음과 같은 함수를 생성하고 이를 사용하여 awk필요에 따라 출력 형식을 지정할 수 있습니다.

generate() {
sudo wpa_passphrase "$1" "$2" | 
awk -F= 'BEGIN      { print "auto wlan0\n" "iface wlan0 inet dhcp" }
         /ssid/     { print "", "wpa-ssid", $2 }
         /[^#]psk=/ { print "", "wpa-psk" , $2 }' OFS='\t'
}

그런 다음 전화를 걸어보세요 generate "my SSID" "PASSWORD".

출력은 다음과 같습니다:

auto wlan0
iface wlan0 inet dhcp
        wpa-ssid        "my SSID"
        wpa-psk ccb290fd4fe6b22935cbae31449e050edd02ad44627b16ce0151668f5f53c01b

관련 정보