이것은 대부분 제가 잘 파악하지 못한 형식 문제입니다.
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