Ich möchte OpenVPN starten (oder stoppen), je nachdem, mit welchem drahtlosen Netzwerk ich verbunden bin.
Aber Dumping env
auspostup()gibt nicht an, ${SSID}
zu diesem Zeitpunkt verfügbar zu sein.
Starrte aufnet/wpa_supplicant.shscheint nicht zu helfen, also wende ich mich an Hivemind, um Hilfe zu bekommen.
Antwort1
Ursprünglich wollte ich OpenVPN nicht basierend auf der SSID starten, mit der ich mich verbinde. Aber die bessere Lösung, zu der ich gekommen bin, istschau dir die IP an.
/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
}
BEARBEITENDarüber hinaus habe ich diese Logik nun auf einedhcpcdHook. Damit dies funktioniert, sollten Sie einen eindeutigen DHCP-Optionswert von Ihrem speziellen DHCP-Server senden: Ich verwende hier Option 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