git-svn-id: https://svn.code.sf.net/p/xcat/code/xcat-core/trunk@1808 8638fb3e-16cb-4fca-ae20-7b5d299a9bcd
		
			
				
	
	
		
			162 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			162 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
# IBM(c) 2007 EPL license http://www.eclipse.org/legal/epl-v10.html
 | 
						|
 | 
						|
#-------------------------------------------------------------------------------
 | 
						|
#=head1  syslog 
 | 
						|
#=head2  syslog command that setsup the syslogd for MS, SV and nodes.
 | 
						|
#        On MS, it makes sure all the xCAT messages goes to /var/log/messages file,
 | 
						|
#               it enables syslogd receving logs from remote machies. 
 | 
						|
#        On MS, it sends all the messages to MS,
 | 
						|
#               it enables syslogd receving logs from remote nodes. 
 | 
						|
#        On node,  it sends all the messages its master.  
 | 
						|
#        Input: none, it takes the following environment variables: 
 | 
						|
#           OSVER: possible values are sles10, fedora8, redhat5, aix etc.   
 | 
						|
#=cut
 | 
						|
#-------------------------------------------------------------------------------
 | 
						|
 | 
						|
master=$MASTER
 | 
						|
conf_file="/etc/syslog.conf"
 | 
						|
sysconfig="/etc/sysconfig/syslog"
 | 
						|
init="/etc/init.d/syslog"
 | 
						|
ng=0
 | 
						|
isSN=0
 | 
						|
isLinux=1
 | 
						|
 | 
						|
#echo "NTYPE=$NTYPE,OSVER=$OSVER,OSTYPE=$OSTYPE"
 | 
						|
 | 
						|
if [[ $NTYPE = service ]]; then 
 | 
						|
  isSN=1
 | 
						|
fi
 | 
						|
 | 
						|
if [[ $OSTYPE = linux* ]]; then
 | 
						|
  if [[ $OSVER = fedora* ]] || [[ -f /etc/fedora-release ]]; then
 | 
						|
    if [ -e /etc/rsyslog.conf ]; then
 | 
						|
      conf_file="/etc/rsyslog.conf"
 | 
						|
      sysconfig="/etc/sysconfig/rsyslog"
 | 
						|
      init="/etc/init.d/rsyslog"
 | 
						|
    fi
 | 
						|
  else 
 | 
						|
    if [[ $OSVER = sles* ]] || [[ $OSVER = suse* ]] || [[ -f /etc/SuSE-release ]]; then
 | 
						|
      #find out which syslog is used for SLES, syslog or syslog-ng
 | 
						|
      result=`grep "^SYSLOG_DAEMON=" $sysconfig 2>&1`
 | 
						|
      if [[ $result = *syslog-ng* ]]; then
 | 
						|
        conf_file="/etc/syslog-ng/syslog-ng.conf"
 | 
						|
        ng=1
 | 
						|
      fi
 | 
						|
    fi
 | 
						|
  fi 
 | 
						|
else
 | 
						|
  sysconfig=  #AIX does not have this file
 | 
						|
  isLinux=0;
 | 
						|
fi
 | 
						|
 | 
						|
#echo "isSN=$isSN, isLinux=$isLinux, ng=$ng"
 | 
						|
#echo "sysconfig=$sysconfig, confgile=$conf_file"
 | 
						|
 | 
						|
#handle sysconfig file to make remote loggling possible 
 | 
						|
if [ $isLinux -eq 1 ] && [ -a $sysconfig ]; then 
 | 
						|
  if [[ ! -f "$sysconfig.XCATORIG" ]]; then
 | 
						|
    cp -f $sysconfig $sysconfig.XCATORIG
 | 
						|
  fi
 | 
						|
  if [ -f /etc/xCATMN ]; then
 | 
						|
    #on MN: make the syslogd be able to receive remote logs 
 | 
						|
    awk  '{if($0 ~ /^SYSLOGD_OPTIONS=/) {
 | 
						|
            if ($0 !~ /-r/) {sub(/\"$/, " -r\"", $0)}
 | 
						|
            if (($0 !~ /-m0/) && ($0 !~/-m 0/)) { sub(/\"$/, " -m 0\"", $0)}
 | 
						|
            print $0}
 | 
						|
          else { print $0}}'  $sysconfig > $sysconfig.tmp 
 | 
						|
  else
 | 
						|
    if [ $isSN -eq 1 ]; then
 | 
						|
      #on SN: make the syslog be able to receive and forward remote logs
 | 
						|
      awk '{if($0 ~ /^SYSLOGD_OPTIONS=/) {
 | 
						|
              if ($0 !~ /-r/) {sub(/\"$/, " -r\"", $0)}
 | 
						|
              if ($0 !~ /-h/) {sub(/\"$/, " -h\"", $0)}
 | 
						|
              if (($0 !~ /-m0/) && ($0 !~/-m 0/)) { sub(/\"$/, " -m 0\"", $0)}
 | 
						|
              print $0}
 | 
						|
            else { print $0}}'  $sysconfig > $sysconfig.tmp 
 | 
						|
    else
 | 
						|
      ##turn off the time marker on all 
 | 
						|
      awk '{if($0 ~ /^SYSLOGD_OPTIONS=/) {
 | 
						|
              if (($0 !~ /-m0/) && ($0 !~/-m 0/)) { sub(/\"$/, " -m 0\"", $0)}
 | 
						|
              print $0}
 | 
						|
            else {print $0}}' $sysconfig > $sysconfig.tmp 
 | 
						|
    fi
 | 
						|
  fi
 | 
						|
  mv -f $sysconfig.tmp $sysconfig   
 | 
						|
fi  
 | 
						|
 | 
						|
 | 
						|
#syslog-ng has different way of enabling log forwarding
 | 
						|
if [ $ng -eq 1 -a $isSN -eq 1 ]; then
 | 
						|
  if [ ! -f $conf_file.XCATORIG ];  then
 | 
						|
    cp -f $conf_file $conf_file.XCATORIG
 | 
						|
  fi
 | 
						|
  sed -i 's/#udp(ip("0.0.0.0/udp(ip("0.0.0.0/' $conf_file
 | 
						|
fi
 | 
						|
 | 
						|
#now handling where the logs go
 | 
						|
goLocal=0;
 | 
						|
if [ -f /etc/xCATMN ]; then
 | 
						|
  goLocal=1
 | 
						|
else 
 | 
						|
  if [ $isSN -eq 1 ]; then
 | 
						|
     if [[ $SVLOGLOCAL -eq 1 ]]; then
 | 
						|
       goLocal=1  
 | 
						|
     fi
 | 
						|
  fi
 | 
						|
fi
 | 
						|
 | 
						|
if [ $goLocal -eq 1 ]; then
 | 
						|
  #making sure all the messages goes to /var/log/messages
 | 
						|
  touch  /var/log/messages 
 | 
						|
  if [ $ng -eq 0 ]; then
 | 
						|
    if [ ! -f $conf_file.XCATORIG ]; then
 | 
						|
      cp -f $conf_file $conf_file.XCATORIG
 | 
						|
    fi
 | 
						|
 | 
						|
    grep "xCAT settings" $conf_file
 | 
						|
    if [ $? -gt 0 ]; then
 | 
						|
      if [ $isLinux -eq 0 ]; then # aix
 | 
						|
        echo "# xCAT settings" >> $conf_file
 | 
						|
        echo "*.debug  /var/log/messages  rotate 1024K files 5" >> $conf_file
 | 
						|
      fi
 | 
						|
    fi
 | 
						|
  fi
 | 
						|
else 
 | 
						|
  #now make the syslogd fowarding the messages to the the master
 | 
						|
  if [ $ng -eq 1 ]; then
 | 
						|
    if [ ! -f $conf_file.XCATORIG ]; then
 | 
						|
      cp -f $conf_file $conf_file.XCATORIG
 | 
						|
    fi
 | 
						|
    grep "xCAT settings" $conf_file
 | 
						|
    if [ $? -gt 0 ]; then
 | 
						|
      echo "# xCAT settings" >> $conf_file
 | 
						|
      echo "destination loghost { udp(\"$master\"); };" >> $conf_file
 | 
						|
      echo 'log { source(src); destination(loghost); };' >> $conf_file
 | 
						|
    fi
 | 
						|
  else 
 | 
						|
    if [ -f $conf_file.XCATORIG ]; then 
 | 
						|
      rm -f $conf_file 
 | 
						|
    else 
 | 
						|
      mv -f $conf_file $conf_file.XCATORIG
 | 
						|
    fi
 | 
						|
    echo "# xCAT settings" > $conf_file
 | 
						|
    if [ $isLinux -eq 0 ]; then
 | 
						|
      echo "*.debug @$master" >> $conf_file
 | 
						|
    else
 | 
						|
      echo "*.* @$master" >> $conf_file
 | 
						|
    fi
 | 
						|
  fi
 | 
						|
fi
 | 
						|
 | 
						|
#restart the syslog daemon to take the new conf file settings
 | 
						|
if [ $isLinux -eq 0 ]; then
 | 
						|
  refresh -s syslogd
 | 
						|
else 
 | 
						|
  $init restart
 | 
						|
fi
 | 
						|
 | 
						|
#keep a record
 | 
						|
logger -t xcat "Install: syslog setup"
 | 
						|
exit 0
 |