From ee955bd93bd5199d885c1d6c4c4b18a059ea4c38 Mon Sep 17 00:00:00 2001 From: Mohit Mehta Date: Fri, 8 Aug 2008 22:53:05 +0000 Subject: tighten the checks for checking the existence or removal or nameservers --- scripts/system/vyatta_update_resolv.pl | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'scripts') diff --git a/scripts/system/vyatta_update_resolv.pl b/scripts/system/vyatta_update_resolv.pl index cb6599ae..054e8ee9 100755 --- a/scripts/system/vyatta_update_resolv.pl +++ b/scripts/system/vyatta_update_resolv.pl @@ -121,8 +121,19 @@ if ($dhclient_script == 1) { chomp $ns; $current_dhcp_nameservers[$ns_count] = $ns; $ns_count++; - my $search_ns_in_resolvconf = `grep $ns /etc/resolv.conf 2> /dev/null | wc -l`; - if ($search_ns_in_resolvconf == 0) { + my @search_ns_in_resolvconf = `grep $ns /etc/resolv.conf`; + my $ns_in_resolvconf = 0; + if (@search_ns_in_resolvconf > 0) { + foreach my $ns_resolvconf (@search_ns_in_resolvconf) { + my @resolv_ns = split(/\s+/, $ns_resolvconf); + my $final_ns = $resolv_ns[1]; + chomp $final_ns; + if ($final_ns eq $ns) { + $ns_in_resolvconf = 1; + } + } + } + if ($ns_in_resolvconf == 0) { open (APPEND, ">>/etc/resolv.conf") or die "$! error trying to overwrite"; print APPEND "nameserver\t$ns\t\t#nameserver written by $0\n"; close (APPEND); @@ -145,7 +156,7 @@ if ($dhclient_script == 1) { } if ($#current_dhcp_nameservers < 0) { for my $dhcpnameserver (@dhcp_nameservers_in_resolvconf) { - my $cmd = "sed -i '/$dhcpnameserver/d' /etc/resolv.conf"; + my $cmd = "sed -i '/$dhcpnameserver\t/d' /etc/resolv.conf"; system($cmd); $restart_ntp = 1; } @@ -158,7 +169,7 @@ if ($dhclient_script == 1) { } } if ($found == 0) { - my $cmd = "sed -i '/$dhcpnameserver/d' /etc/resolv.conf"; + my $cmd = "sed -i '/$dhcpnameserver\t/d' /etc/resolv.conf"; system($cmd); $restart_ntp = 1; } -- cgit v1.2.3