Skip to content

Instantly share code, notes, and snippets.

@weisi
Created January 25, 2012 08:55
Show Gist options
  • Save weisi/1675504 to your computer and use it in GitHub Desktop.
Save weisi/1675504 to your computer and use it in GitHub Desktop.
update-resolv-conf for openSUSE, using SUSE's netconfig with dirty tricks. No need for resolvconf.
#!/bin/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
#
# Used snippets of resolvconf script by Thomas Hood <jdthood@yahoo.co.uk>
# and Chris Hanson
# Licensed under the GNU GPL. See /usr/share/common-licenses/GPL.
#
# Adjusted for openSUSE and its 'netconfig' component
# using dirty tricks by multiple1902.
# Omitted the 'DOMAIN' part.
#
# 05/2006 chlauber@bnc.ch
# 01/2012 multiple1902@gmail.com
#
# 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'
NETCONFIG="/sbin/netconfig"
CONFIGFILE="/var/run/netconfig/NetworkManager.netconfig"
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
fi
done
cp $CONFIGFILE{,.bak}
grep -v DNSSERVERS $CONFIGFILE.bak > $CONFIGFILE
echo "DNSSERVERS='$IF_DNS_NAMESERVERS'" >> $CONFIGFILE
$NETCONFIG update -f
;;
down)
cp $CONFIGFILE{.bak,}
$NETCONFIG update -f
;;
esac
@krstns
Copy link

krstns commented Oct 4, 2012

I'm trying to update DNS settings using this or other scripts [even the ones which come with openvpn on opensuse] and I can't.
netconfig won't change the DNSes for me in resolv.conf.
Did you change anything in the NetworkManager configuration?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment