diff options
author | rbalocca <rbalocca@fugazi.vyatta.com> | 2007-12-19 15:19:37 -0800 |
---|---|---|
committer | rbalocca <rbalocca@fugazi.vyatta.com> | 2007-12-19 15:19:37 -0800 |
commit | a27a8f7b5501ef9fa1c8e3be0fed4430d0515271 (patch) | |
tree | 1ae0af03eaa4214fdcc69a57e20c2598f44e6519 /scripts | |
parent | eefd3f1d5836f383f4d627f02c794d870f23bb94 (diff) | |
parent | 793d580050edada4b4468b0d8044615ff5fc15aa (diff) | |
download | vyatta-cfg-system-a27a8f7b5501ef9fa1c8e3be0fed4430d0515271.tar.gz vyatta-cfg-system-a27a8f7b5501ef9fa1c8e3be0fed4430d0515271.zip |
Merge branch 'master' into glendale
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/keepalived/VyattaKeepalived.pm | 9 | ||||
-rwxr-xr-x | scripts/keepalived/vyatta-show-vrrp.pl | 10 | ||||
-rwxr-xr-x | scripts/system/vyatta_update_resolv.pl | 95 |
3 files changed, 109 insertions, 5 deletions
diff --git a/scripts/keepalived/VyattaKeepalived.pm b/scripts/keepalived/VyattaKeepalived.pm index e0e84af3..13512b42 100755 --- a/scripts/keepalived/VyattaKeepalived.pm +++ b/scripts/keepalived/VyattaKeepalived.pm @@ -115,11 +115,16 @@ sub get_master_file { } sub get_state_files { - my $intf = shift; + my ($intf, $group) = @_; # todo: fix sorting for ethX > 9 my @state_files; - open(my $LS, "ls $state_dir |grep '^vrrpd_$intf.*\.state\$' | sort |"); + my $LS; + if ($group eq "all") { + open($LS,"ls $state_dir |grep '^vrrpd_$intf.*\.state\$' | sort |"); + } else { + open($LS,"ls $state_dir |grep '^vrrpd_$intf.\_$group\.state\$' | sort |"); + } @state_files = <$LS>; close($LS); foreach my $i (0 .. $#state_files) { diff --git a/scripts/keepalived/vyatta-show-vrrp.pl b/scripts/keepalived/vyatta-show-vrrp.pl index 934808f6..9228eeeb 100755 --- a/scripts/keepalived/vyatta-show-vrrp.pl +++ b/scripts/keepalived/vyatta-show-vrrp.pl @@ -147,17 +147,21 @@ sub vrrp_show { # # main # -my $intf = "eth"; -if ($#ARGV > -1) { +my $intf = "eth"; +my $group = "all"; +if ($#ARGV == 0) { $intf = $ARGV[0]; } +if ($#ARGV == 1) { + $group = $ARGV[1]; +} if (!VyattaKeepalived::is_running()) { print "VRRP isn't running\n"; exit 1; } -my @state_files = VyattaKeepalived::get_state_files($intf); +my @state_files = VyattaKeepalived::get_state_files($intf, $group); foreach my $state_file (@state_files) { vrrp_show($state_file); } diff --git a/scripts/system/vyatta_update_resolv.pl b/scripts/system/vyatta_update_resolv.pl new file mode 100755 index 00000000..0255b256 --- /dev/null +++ b/scripts/system/vyatta_update_resolv.pl @@ -0,0 +1,95 @@ +#!/usr/bin/perl -w +# +# Module: vyatta_update_resolv.pl +# +# **** License **** +# Version: VPL 1.0 +# +# The contents of this file are subject to the Vyatta Public License +# Version 1.0 ("License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License at +# http://www.vyatta.com/vpl +# +# Software distributed under the License is distributed on an "AS IS" +# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See +# the License for the specific language governing rights and limitations +# under the License. +# +# This code was originally developed by Vyatta, Inc. +# Portions created by Vyatta are Copyright (C) 2007 Vyatta, Inc. +# All Rights Reserved. +# +# Author: Marat Nepomnyashy +# Date: December 2007 +# Description: Script to update '/etc/resolv.conf' on commit of 'system domain-search domain' config. +# +# **** End License **** +# + +use strict; +use lib "/opt/vyatta/share/perl5/"; + + +use Getopt::Long; +my $change_dir = ''; +my $modify_dir = ''; +GetOptions("change_dir=s" => \$change_dir, "modify_dir=s" => \$modify_dir); + + +use VyattaConfig; +my $vc = new VyattaConfig(); + +if ($change_dir ne '') { + $vc->{_changes_only_dir_base} = $change_dir; +} +if ($modify_dir ne '') { + $vc->{_new_config_dir_base} = $modify_dir; +} + + +my $doms = ''; +$vc->setLevel('system domain-search domain'); +my @domains = $vc->returnValues('.'); +foreach my $domain (@domains) { + if (length($doms) > 0) { + $doms .= ' '; + } + $doms .= $domain; +} + +my $search = ''; +if (length($doms) > 0) { + $search = "search\t\t$doms\t\t#line generated by $0\n"; +} + + +# The following will re-write '/etc/resolv.conf' line by line, +# replacing the 'search' specifier with the latest values. + +my @resolv; +if (-e '/etc/resolv.conf') { + open (RESOLV, '</etc/resolv.conf') or die("$0: Error! Unable to open '/etc/resolv.conf' for input: $!\n"); + @resolv = <RESOLV>; + close (RESOLV); +} + + +my $foundSearch = 0; + +open (RESOLV, '>/etc/resolv.conf') or die("$0: Error! Unable to open '/etc/resolv.conf' for output: $!\n"); +foreach my $line (@resolv) { + if ($line =~ /^search\s/) { + $foundSearch = 1; + if (length($search) > 0) { + print RESOLV $search; + } + } else { + print RESOLV $line; + } +} +if ($foundSearch == 0 && length($search) > 0) { + print RESOLV $search; +} + +close (RESOLV); + |