%EC%97%90%EC%84%9C%20SSID%20%EC%A0%95%EB%B3%B4%EC%97%90%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%A0%91%EA%B7%BC%ED%95%98%EB%82%98%EC%9A%94%3F.png)
연결된 무선 네트워크에 따라 openvpn을 실행(또는 중지)하고 싶습니다.
그러나 덤핑 env
에서포스트업()${SSID}
해당 시간에 사용할 수 있음을 나타내지 않습니다 .
쳐다보고net/wpa_supplicant.sh도움이 되지 않는 것 같아서 하이브마인드에 도움을 요청하고 있습니다.
답변1
원래 연결하려는 SSID를 기반으로 openvpn을 시작하지 않으려고 했습니다. 하지만 내가 도달한 더 나은 해결책은IP를 봐.
/etc/conf.d/net:
postup() {
# https://stackoverflow.com/questions/845694/how-do-i-find-my-computers-ip-address-using-the-bash-shell
IP=$(ifconfig ${IFACE} | sed -n 's/.*inet addr:\([0-9.]\+\)\s.*/\1/p')
OPENVPN=$(if [[ "${IFACE}" != "tun0" && ${IP%.*} != 192.168.[13] ]]; then echo "YES"; fi)
sw-notify-send -i "${ICONS}/network-status.png" "${IFACE}" "$(ip addr show dev ${IFACE} | grep inet)"
if [[ -n ${OPENVPN} ]]; then
sw-notify-send -i "${ICONS}/network-status.png" "${IFACE}" "No IP range conflict detected for ${IP}, starting openvpn"
/etc/init.d/openvpn -D restart
fi
return 0
}
편집하다더 나아가, 나는 이제 이 논리를 다음으로 옮겼습니다.dhcpcd훅. 이것이 작동하려면 특수 DHCP 서버에서 고유한 dhcp 옵션 값을 보내야 합니다. 여기서는 옵션 114 "default_url"을 사용하고 있습니다.
/etc/dhcpcd.enter-hook:
ACTION="stop"
COMMAND="openvpn.noroutes"
if [ "$reason" = "BOUND" ]; then
if [ ! -z ${new_default_url} ]; then
sw-notify-send $ifname "Detected DHCP default_url $new_default_url, skipping openvpn"
exit 1
fi
OPENVPN=$(if [[ $ifname != "tun0" && ${new_network_number%.*} != 192.168.[13] ]]; then echo "YES"; fi)
if [[ -n $OPENVPN ]]; then
sw-notify-send $ifname "IP range for $new_ip_address is free, starting openvpn"
COMMAND="openvpn"
fi
ACTION="restart"
/etc/init.d/"${COMMAND}" -D "${ACTION}"
fi