Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env bash
- #
- # Parses DHCP options from openvpn to update resolv.conf
- # To use set as 'up' and 'down' script in your openvpn *.conf:
- # up /etc/openvpn/update-resolv-conf
- # down /etc/openvpn/update-resolv-conf
- #
- # Example envs set from openvpn:
- # foreign_option_1='dhcp-option DNS 193.43.27.132'
- # foreign_option_2='dhcp-option DNS 193.43.27.133'
- # foreign_option_3='dhcp-option DOMAIN be.bnc.ch'
- # foreign_option_4='dhcp-option DOMAIN-SEARCH bnc.local'
- case $script_type in
- up)
- for optionname in ${!foreign_option_*} ; do
- option="${!optionname}"
- echo $option
- part1=$(echo "$option" | cut -d " " -f 1)
- if [ "$part1" == "dhcp-option" ] ; then
- part2=$(echo "$option" | cut -d " " -f 2)
- part3=$(echo "$option" | cut -d " " -f 3)
- if [ "$part2" == "DNS" ] ; then
- IF_DNS_NAMESERVERS="$IF_DNS_NAMESERVERS $part3"
- fi
- if [[ "$part2" == "DOMAIN" || "$part2" == "DOMAIN-SEARCH" ]] ; then
- IF_DNS_SEARCH="$IF_DNS_SEARCH $part3"
- fi
- fi
- done
- if [ -n "$IF_DNS_SEARCH" ]; then
- nmcli connection modify "${dev}" ipv4.dns-search "$IF_DNS_SEARCH"
- fi
- if [ -n "$IF_DNS_NAMESERVERS" ]; then
- nmcli connection modify "${dev}" ipv4.dns "$IF_DNS_NAMESERVERS"
- fi
- nmcli connection up "${dev}" # Force NM to reevaluate the properties
- ;;
- esac
- # Workaround / jm@epiclabs.io
- # force exit with no errors. Due to an apparent conflict with the Network Manager
- # $RESOLVCONF sometimes exits with error code 6 even though it has performed the
- # action correctly and OpenVPN shuts down.
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement