Wie greife ich auf SSID-Informationen von postup() in Gentoos OpenRC /etc/conf.d/net zu?

Wie greife ich auf SSID-Informationen von postup() in Gentoos OpenRC /etc/conf.d/net zu?

Ich möchte OpenVPN starten (oder stoppen), je nachdem, mit welchem ​​drahtlosen Netzwerk ich verbunden bin.

Aber Dumping envauspostup()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

verwandte Informationen