summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Davidson <james.davidson@vyatta.com>2013-01-29 09:50:46 -0800
committerJames Davidson <james.davidson@vyatta.com>2013-01-29 09:59:41 -0800
commit28ed69c424c61faf7edbb6039fb13717efbb435b (patch)
treeed42a8e1f246926fe1945683cb71379965453062
parent8bc99945b85ab7b75f52d017f9e023f7ff419c70 (diff)
downloadvyatta-cfg-system-28ed69c424c61faf7edbb6039fb13717efbb435b.tar.gz
vyatta-cfg-system-28ed69c424c61faf7edbb6039fb13717efbb435b.zip
Add ability to restart services when hostname changes
Currently only restart rsyslog but more can be added as needed. Fixes bug 8237. (cherry picked from commit a2b2ce86df549560ee4438e92a8663c0a0706b82)
-rwxr-xr-xscripts/system/vyatta_update_hosts.pl20
-rw-r--r--templates/system/domain-name/node.def4
2 files changed, 20 insertions, 4 deletions
diff --git a/scripts/system/vyatta_update_hosts.pl b/scripts/system/vyatta_update_hosts.pl
index 7c8bc8e6..22b141ab 100755
--- a/scripts/system/vyatta_update_hosts.pl
+++ b/scripts/system/vyatta_update_hosts.pl
@@ -13,7 +13,7 @@
# General Public License for more details.
#
# This code was originally developed by Vyatta, Inc.
-# Portions created by Vyatta are Copyright (C) 2012 Vyatta, Inc.
+# Portions created by Vyatta are Copyright (C) 2012-2013 Vyatta, Inc.
# All Rights Reserved.
#
# Description:
@@ -24,16 +24,19 @@
#
use strict;
+use English;
use lib "/opt/vyatta/share/perl5/";
use File::Temp qw(tempfile);
use Vyatta::File qw(touch);
use Vyatta::Config;
+use Getopt::Long;
my $HOSTS_CFG = '/etc/hosts';
my $HOSTS_TMPL = "/tmp/hosts.XXXXXX";
my $HOSTNAME_CFG = '/etc/hostname';
my $MAILNAME_CFG = '/etc/mailname';
+my $restart_services = 1;
sub set_hostname {
my ( $hostname ) = @_;
@@ -52,6 +55,13 @@ sub set_mailname {
close ($f);
}
+if ($EUID != 0) {
+ printf("This program must be run by root.\n");
+ exit 1;
+}
+
+GetOptions("restart-services!" => \$restart_services);
+
my $vc = new Vyatta::Config();
$vc->setLevel('system');
@@ -91,8 +101,14 @@ print $out $hosts_line;
close ($in);
close ($out);
-system("sudo cp $tempname $HOSTS_CFG") == 0
+system("cp $tempname $HOSTS_CFG") == 0
or die "Can't copy $tempname to $HOSTS_CFG: $!";
set_hostname $host_name;
set_mailname $mail_name;
+
+# Restart services that use the system hostname;
+# add more ase needed.
+if ($restart_services) {
+ system("invoke-rc.d rsyslog restart");
+}
diff --git a/templates/system/domain-name/node.def b/templates/system/domain-name/node.def
index 429fd47f..5ea44f32 100644
--- a/templates/system/domain-name/node.def
+++ b/templates/system/domain-name/node.def
@@ -6,7 +6,7 @@ help: System domain name
syntax:expression: exec "/opt/vyatta/sbin/vyatta_check_domainname.pl $VAR(../host-name).$VAR(@)"
update: sudo /opt/vyatta/sbin/vyatta_update_resolv.pl
- sudo /opt/vyatta/sbin/vyatta_update_hosts.pl
+ sudo /opt/vyatta/sbin/vyatta_update_hosts.pl --no-restart-services
delete: sudo /opt/vyatta/sbin/vyatta_update_resolv.pl
- sudo /opt/vyatta/sbin/vyatta_update_hosts.pl \ No newline at end of file
+ sudo /opt/vyatta/sbin/vyatta_update_hosts.pl --no-restart-servces \ No newline at end of file