Fix for defect 3419745: Fix Method to Determine if System is Ubuntu
git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@10710 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
This commit is contained in:
		| @@ -4925,17 +4925,35 @@ sub osver | ||||
|         $ver =~ tr/\.//; | ||||
|         $ver =~ s/[^0-9]*([0-9]+).*/$1/; | ||||
|     } | ||||
|     elsif (-f "/etc/lsb-release")#ubuntu | ||||
|     elsif (-f "/etc/lsb-release")   # Possibly Ubuntu | ||||
|     { | ||||
|  | ||||
|         $os = "ubuntu"; | ||||
|         open($relfile,"<","/etc/lsb-release"); | ||||
|         my @text = <$relfile>; | ||||
|         close($relfile); | ||||
|         foreach (@text){ | ||||
|         	if ( $_ =~ /DISTRIB_RELEASE=(\S+)/ ) { | ||||
|         		$ver = $1; | ||||
|         	} | ||||
|         if (open($relfile,"<","/etc/lsb-release")) { | ||||
|             my @text = <$relfile>; | ||||
|             close($relfile); | ||||
|             chomp(@text); | ||||
|             my $distrib_id = ''; | ||||
|             my $distrib_rel = ''; | ||||
|  | ||||
|             foreach (@text) { | ||||
|                 if ( $_ =~ /^\s*DISTRIB_ID=(.*)$/ ) { | ||||
|                     $distrib_id = $1;                   # last DISTRIB_ID value in file used | ||||
|                 } elsif ( $_ =~ /^\s*DISTRIB_RELEASE=(.*)$/ ) { | ||||
|                     $distrib_rel = $1;                  # last DISTRIB_RELEASE value in file used | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             if ( $distrib_id =~ /^(Ubuntu|"Ubuntu")\s*$/ ) { | ||||
|                 $os = "ubuntu"; | ||||
|  | ||||
|                 if ( $distrib_rel =~ /^(.*?)\s*$/ ) {       # eliminate trailing blanks, if any | ||||
|                     $distrib_rel = $1; | ||||
|                 } | ||||
|                 if ( $distrib_rel =~ /^"(.*?)"$/ ) {        # eliminate enclosing quotes, if any | ||||
|                     $distrib_rel = $1; | ||||
|                 } | ||||
|                 $ver = $distrib_rel; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|     $os = "$os" . "$ver"; | ||||
|   | ||||
| @@ -654,12 +654,12 @@ sub setup_DHCP | ||||
|     ${"xCAT_plugin::" . $modname . "::"}{process_request} | ||||
|       ->($cmdref, \&xCAT::Client::handle_response); | ||||
|  | ||||
|     my $distro = xCAT::Utils->osver(); | ||||
|     my $serv = "dhcpd"; | ||||
|     if ( $distro =~ /ubuntu.*/ ){ | ||||
|         $serv = "dhcp3-server";	 | ||||
|     } | ||||
|  | ||||
| 	my $distro = xCAT::Utils->osver(); | ||||
| 	my $serv = "dhcpd"; | ||||
| 	if ( $distro =~ /ubuntu*/ ){ | ||||
| 		$serv = "dhcp3-server";	 | ||||
| 	} | ||||
|     my $rc = xCAT::Utils->startService($serv); | ||||
|     if ($rc != 0) | ||||
|     { | ||||
| @@ -781,13 +781,13 @@ sub setup_DNS | ||||
|     system("$XCATROOT/sbin/makenamed.conf"); | ||||
|  | ||||
|     # turn DNS on | ||||
| 	 | ||||
| 	my $distro = xCAT::Utils->osver(); | ||||
| 	my $serv = "named"; | ||||
| 	if ( $distro =~ /ubuntu*/ ){ | ||||
| 		$serv = "bind9";	 | ||||
| 	} | ||||
| 	 | ||||
|  | ||||
|     my $distro = xCAT::Utils->osver(); | ||||
|     my $serv = "named"; | ||||
|     if ( $distro =~ /ubuntu.*/ ){ | ||||
|         $serv = "bind9"; | ||||
|     } | ||||
|  | ||||
|     my $rc = xCAT::Utils->startService($serv); | ||||
|     if ($rc != 0) | ||||
|     { | ||||
|   | ||||
| @@ -19,8 +19,8 @@ my $distro = xCAT::Utils->osver(); | ||||
|  | ||||
| my $service="named"; | ||||
| # is this ubuntu ? | ||||
| if ( $distro =~ /ubuntu*/ ){ | ||||
| 	$service = "bind9";	 | ||||
| if ( $distro =~ /ubuntu.*/ ){ | ||||
|     $service = "bind9";	 | ||||
| } | ||||
|  | ||||
| sub handled_commands | ||||
| @@ -547,11 +547,11 @@ sub get_zonesdir { | ||||
|  | ||||
| sub get_conf { | ||||
|     my $conf="/etc/named.conf"; | ||||
| 	# is this ubuntu ? | ||||
| 	if ( $distro =~ /ubuntu*/ ){ | ||||
| 		$conf="/etc/bind/named.conf"; | ||||
| 	} | ||||
| 	 | ||||
|     # is this ubuntu ? | ||||
|     if ( $distro =~ /ubuntu.*/ ){ | ||||
|         $conf="/etc/bind/named.conf"; | ||||
|     } | ||||
|  | ||||
|     my $sitetab = xCAT::Table->new('site'); | ||||
|  | ||||
|     unless ($sitetab) | ||||
|   | ||||
| @@ -62,8 +62,8 @@ if ( $^O ne 'aix' and -d "/etc/dhcp" ) { | ||||
| my $usingipv6; | ||||
|  | ||||
| # is this ubuntu ? | ||||
| if ( $distro =~ /ubuntu*/ ){ | ||||
| 	$dhcpconffile = '/etc/dhcp3/dhcpd.conf';	 | ||||
| if ( $distro =~ /ubuntu.*/ ){ | ||||
|     $dhcpconffile = '/etc/dhcp3/dhcpd.conf';	 | ||||
| } | ||||
|  | ||||
| sub check_uefi_support { | ||||
| @@ -1402,9 +1402,9 @@ sub process_request | ||||
|         { | ||||
|             restart_dhcpd_aix(); | ||||
|         } | ||||
|         elsif ( $distro =~ /ubuntu*/) | ||||
|         elsif ( $distro =~ /ubuntu.*/) | ||||
|         { | ||||
|         	#ubuntu config | ||||
|             #ubuntu config | ||||
|             system("chmod a+r /etc/dhcp3/dhcpd.conf"); | ||||
|             system("/etc/init.d/dhcp3-server restart"); | ||||
|         } | ||||
|   | ||||
| @@ -1,5 +1,32 @@ | ||||
| #!/bin/sh | ||||
|  | ||||
| # is_lsb_ubuntu exit status indicates whether system appears to be Ubuntu. | ||||
| # Using required /etc/lsb-release file, instead of optional lsb_release command. | ||||
|  | ||||
| is_lsb_ubuntu () | ||||
| { | ||||
|     awk ' | ||||
|         (match($0, "^[ \t]*DISTRIB_ID=") == 1) {    # A DISTRIB_ID line | ||||
|             id = substr($0, RLENGTH + 1)            # Save its value | ||||
|         } | ||||
|  | ||||
|         END { | ||||
|             # Examine last DISTRIB_ID value to see if Ubuntu indicated | ||||
|  | ||||
|             if (match(id, "^(Ubuntu|\"Ubuntu\")[ \t]*$") == 1) { | ||||
|                 exit 0    # Ubuntu | ||||
|             } | ||||
|             exit 1        # Not Ubuntu | ||||
|         } | ||||
|  | ||||
|     ' /etc/lsb-release >/dev/null 2>&1 | ||||
|  | ||||
|     # Routine exit status is exit status of the last command -- the awk script. | ||||
|     # | ||||
|     #   Note: if /etc/lsb-release does not exist, the exit status indicates | ||||
|     #         failure (not Ubuntu), which is the correct outcome. | ||||
| } | ||||
|  | ||||
|  | ||||
| DIRECTORY=/var/named  | ||||
|  | ||||
| @@ -8,7 +35,7 @@ if [ -f /etc/SuSE-release ]; then | ||||
| fi | ||||
| FILE=/etc/named.conf | ||||
|  | ||||
| if [ -f /etc/lsb-release ]; then | ||||
| if ( is_lsb_ubuntu ); then | ||||
|   FILE=/etc/bind/named.conf | ||||
| fi | ||||
|  | ||||
|   | ||||
| @@ -831,6 +831,31 @@ sub genSSHNodeHostKey | ||||
|     } | ||||
| } | ||||
|  | ||||
| # is_lsb_ubuntu return value indicates whether system appears to be Ubuntu. | ||||
| # Using required /etc/lsb-release file, instead of optional lsb_release command. | ||||
|  | ||||
| sub is_lsb_ubuntu | ||||
| { | ||||
|     if (open(my $relfile, "<", "/etc/lsb-release")) { | ||||
|         my @text = <$relfile>; | ||||
|         close($relfile); | ||||
|         chomp(@text); | ||||
|         my $distrib_id = ''; | ||||
|  | ||||
|         foreach (@text) { | ||||
|             if ( $_ =~ /^\s*DISTRIB_ID=(.*)$/ ) { | ||||
|                 $distrib_id = $1;                   # last DISTRIB_ID value in file used | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         if ( $distrib_id =~ /^(Ubuntu|"Ubuntu")\s*$/ ) { | ||||
|             return 1;                               # return "true" | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     return 0;                   # return "false" | ||||
| } | ||||
|  | ||||
| # on Ubuntu need to painstakingly compare /etc/localtime with files under | ||||
| # /usr/share/zoneinfo since /etc/localtime # isn't always a symbolic link | ||||
| sub discover_timezone_ubuntu | ||||
| @@ -942,7 +967,7 @@ sub initDB | ||||
|             $tz = | ||||
|               `grep ^ZONE /etc/sysconfig/clock|cut -d= -f 2|sed -e 's/"//g'`; | ||||
|         } | ||||
|         elsif (-f "/etc/lsb-release") | ||||
|         elsif ( is_lsb_ubuntu() ) | ||||
|         { | ||||
|             $tz = discover_timezone_ubuntu; | ||||
|         } | ||||
|   | ||||
| @@ -146,8 +146,7 @@ fi | ||||
| # start up the sshd for syncfiles postscript to do the sync work | ||||
| logger -t xCAT "start up sshd" | ||||
|  | ||||
| DISTRO=`lsb_release -si` | ||||
| if [ $DISTRO = "Ubuntu" ] | ||||
| if [[ $OSVER == ubuntu* ]] | ||||
| then | ||||
|     if [ ! -d /var/run/sshd ] | ||||
|     then | ||||
|   | ||||
| @@ -23,6 +23,33 @@ pmatch () | ||||
|   return 1          # non-zero return code means string not matched by pattern | ||||
| } | ||||
|  | ||||
| # is_lsb_ubuntu exit status indicates whether system appears to be Ubuntu. | ||||
| # Using required /etc/lsb-release file, instead of optional lsb_release command. | ||||
|  | ||||
| is_lsb_ubuntu () | ||||
| { | ||||
|     awk ' | ||||
|         (match($0, "^[ \t]*DISTRIB_ID=") == 1) {    # A DISTRIB_ID line | ||||
|             id = substr($0, RLENGTH + 1)            # Save its value | ||||
|         } | ||||
|  | ||||
|         END { | ||||
|             # Examine last DISTRIB_ID value to see if Ubuntu indicated | ||||
|  | ||||
|             if (match(id, "^(Ubuntu|\"Ubuntu\")[ \t]*$") == 1) { | ||||
|                 exit 0    # Ubuntu | ||||
|             } | ||||
|             exit 1        # Not Ubuntu | ||||
|         } | ||||
|  | ||||
|     ' /etc/lsb-release >/dev/null 2>&1 | ||||
|  | ||||
|     # Routine exit status is exit status of the last command -- the awk script. | ||||
|     # | ||||
|     #   Note: if /etc/lsb-release does not exist, the exit status indicates | ||||
|     #         failure (not Ubuntu), which is the correct outcome. | ||||
| } | ||||
|  | ||||
| logger -t xcat "Install: Setup NTP" | ||||
| # if master is the sitemaster, then use the ntpservers defined in the site | ||||
| # table, if they exist. If they don't exist, do not setup ntp | ||||
| @@ -73,7 +100,7 @@ restrict 127.0.0.1" >>$conf_file | ||||
| # default service for redhat/fedora | ||||
| SERVICE=ntpd | ||||
| echo $SERVICE | ||||
| if ( pmatch $OSVER "sles*" ) || ( pmatch $OSVER "suse*" ) || [ -f /etc/SuSE-release ] || ( pmatch $OSVER "ubuntu*" ); then | ||||
| if ( pmatch $OSVER "sles*" ) || ( pmatch $OSVER "suse*" ) || [ -f /etc/SuSE-release ] || ( pmatch $OSVER "ubuntu*" ) || ( is_lsb_ubuntu ); then | ||||
|   SERVICE=ntp | ||||
| fi | ||||
|  | ||||
|   | ||||
| @@ -35,6 +35,33 @@ pmatch () | ||||
|   return 1          # non-zero return code means string not matched by pattern | ||||
| } | ||||
|  | ||||
| # is_lsb_ubuntu exit status indicates whether system appears to be Ubuntu. | ||||
| # Using required /etc/lsb-release file, instead of optional lsb_release command. | ||||
|  | ||||
| is_lsb_ubuntu () | ||||
| { | ||||
|     awk ' | ||||
|         (match($0, "^[ \t]*DISTRIB_ID=") == 1) {    # A DISTRIB_ID line | ||||
|             id = substr($0, RLENGTH + 1)            # Save its value | ||||
|         } | ||||
|  | ||||
|         END { | ||||
|             # Examine last DISTRIB_ID value to see if Ubuntu indicated | ||||
|  | ||||
|             if (match(id, "^(Ubuntu|\"Ubuntu\")[ \t]*$") == 1) { | ||||
|                 exit 0    # Ubuntu | ||||
|             } | ||||
|             exit 1        # Not Ubuntu | ||||
|         } | ||||
|  | ||||
|     ' /etc/lsb-release >/dev/null 2>&1 | ||||
|  | ||||
|     # Routine exit status is exit status of the last command -- the awk script. | ||||
|     # | ||||
|     #   Note: if /etc/lsb-release does not exist, the exit status indicates | ||||
|     #         failure (not Ubuntu), which is the correct outcome. | ||||
| } | ||||
|  | ||||
| config_Rsyslog_C3() | ||||
| { | ||||
|   isReceiving=0 | ||||
| @@ -85,7 +112,7 @@ if [ $NTYPE = service ]; then | ||||
| fi | ||||
|  | ||||
| if [ "$(uname -s)" = "Linux" ]; then | ||||
|   if ( pmatch $OSVER "fedora*" ) || ( pmatch $OSVER "rhels5*" ) || ( pmatch $OSVER "rhel6*" ) || ( pmatch $OSVER "rhels6*" ) || [ -f /etc/fedora-release ] || [ -f /etc/redhat-release ] || ( pmatch $OSVER "ubuntu*" ); then | ||||
|   if ( pmatch $OSVER "fedora*" ) || ( pmatch $OSVER "rhels5*" ) || ( pmatch $OSVER "rhel6*" ) || ( pmatch $OSVER "rhels6*" ) || [ -f /etc/fedora-release ] || [ -f /etc/redhat-release ] || ( pmatch $OSVER "ubuntu*" ) || ( is_lsb_ubuntu ); then | ||||
|     if [ -e /etc/rsyslog.conf ]; then | ||||
|       conf_file="/etc/rsyslog.conf" | ||||
|       sysconfig="/etc/sysconfig/rsyslog" | ||||
| @@ -207,7 +234,7 @@ else | ||||
|      | ||||
|     #Ubuntu doesn't have sysconfig  | ||||
|     # so configuring the MN to receive UDP connections here. | ||||
|     if ( pmatch $OSVER "ubuntu*" ); then | ||||
|     if ( pmatch $OSVER "ubuntu*" ) || ( is_lsb_ubuntu ); then | ||||
|       egrep \('^\$UDPServerRun 514'\|'^\$ModLoad imudp'\) $conf_file > /dev/null 2>&1; | ||||
|       if [ $? -eq 1 ]; then | ||||
|         echo "\$ModLoad imudp" >> $conf_file; | ||||
| @@ -238,7 +265,7 @@ else | ||||
|       if [ $isLinux -eq 0 ]; then | ||||
|         echo "*.debug @$master" >> $conf_file | ||||
|       else | ||||
|         if ( pmatch $OSVER "ubuntu*" ); then | ||||
|         if ( pmatch $OSVER "ubuntu*" ) || ( is_lsb_ubuntu ); then | ||||
|           echo "\$ModLoad imuxsock" >> $conf_file | ||||
|           echo "*.* @$master" >> $conf_file | ||||
|         else | ||||
|   | ||||
		Reference in New Issue
	
	Block a user