431 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			431 lines
		
	
	
		
			14 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
 | 
						|
#-------------------------------------------------------------------------------
 | 
						|
 | 
						|
if [ "$(uname -s|tr 'A-Z' 'a-z')" = "linux" ];then
 | 
						|
   str_dir_name=`dirname $0`
 | 
						|
   . $str_dir_name/xcatlib.sh
 | 
						|
fi
 | 
						|
 | 
						|
master=$MASTER
 | 
						|
conf_file="/etc/syslog.conf"
 | 
						|
sysconfig="/etc/sysconfig/syslog"
 | 
						|
init="/etc/init.d/syslog"
 | 
						|
ng=0
 | 
						|
isSN=0
 | 
						|
isLinux=1
 | 
						|
isRsyslog=0
 | 
						|
isC3=0
 | 
						|
#systemdEnabled=0
 | 
						|
# pmatch determines if 1st argument string is matched by 2nd argument pattern
 | 
						|
 | 
						|
pmatch ()
 | 
						|
{
 | 
						|
  case $1 in
 | 
						|
    $2) return 0;;  # zero return code means string matched by pattern
 | 
						|
  esac
 | 
						|
 | 
						|
  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
 | 
						|
  isLocal=$1
 | 
						|
 | 
						|
  if [ -f /etc/xCATMN ] ||  [ $isSN -eq 1 ] 
 | 
						|
  then 
 | 
						|
    isReceiving=1
 | 
						|
  fi
 | 
						|
 | 
						|
  if [ ! -f $2.XCATORIG ]; then
 | 
						|
    cp -f $2 $2.XCATORIG
 | 
						|
  else
 | 
						|
    cat $2 > $2.XCATORIG
 | 
						|
  fi
 | 
						|
 | 
						|
  grep "xCAT settings" $conf_file 2>&1 1> /dev/null
 | 
						|
  if [ $? -eq 0 ]; then
 | 
						|
       sed "/# xCAT settings/,$ d" $2 >/tmp/sed.tmp
 | 
						|
       cat /tmp/sed.tmp >$2
 | 
						|
  fi
 | 
						|
 | 
						|
  echo "# xCAT settings" >> $2
 | 
						|
  #enable to receive remote logging
 | 
						|
  if [ $isReceiving -eq 1 ]; then
 | 
						|
      sed 's/^\#\(\s\)*\$ModLoad\(\s\)*imudp/\$ModLoad imudp/' $2 >/tmp/sed.tmp
 | 
						|
      cat /tmp/sed.tmp >$2
 | 
						|
      sed 's/^\#\(\s\)*\$UDPServerRun/\$UDPServerRun/' $2 >/tmp/sed.tmp
 | 
						|
      cat /tmp/sed.tmp >$2
 | 
						|
  fi
 | 
						|
 | 
						|
  #enable to send the logging to master
 | 
						|
  if [ $isLocal -eq 1 ]; then
 | 
						|
  #enable the MN to log all the logs from CN and MN itself
 | 
						|
      sed 's/\(^[^\#].*\/var\/log\/messages\)/\#\1/g' $2 >/tmp/sed.tmp
 | 
						|
      cat /tmp/sed.tmp >$2 
 | 
						|
      echo "*.debug  /var/log/messages" >> $2
 | 
						|
      touch  /var/log/messages  
 | 
						|
  else
 | 
						|
      sed 's/^\(\*\..*\)/\#\1/' $2 >/tmp/sed.tmp
 | 
						|
      cat /tmp/sed.tmp >$2
 | 
						|
      sed 's/^\(news\|local7\|mail\|authpriv\|cron\|kern\)\./\#\1\./' $2 >/tmp/sed.tmp 
 | 
						|
      cat /tmp/sed.tmp >$2
 | 
						|
      echo "*.* @$master" >> $2
 | 
						|
  fi 
 | 
						|
}
 | 
						|
 | 
						|
# This sets up rsyslog 8.x, different from the previous rsyslog versions.  
 | 
						|
# Instead of updating /etc/rsyslog.conf  for forwarding to a remote host,
 | 
						|
# You update /etc/rsyslog.d/remote.conf.  The /etc/sysconfig/rsyslog file does not exist.
 | 
						|
# This is only for Linux, since AIX does not use rsyslog.  It ships its own syslog in an lpp,
 | 
						|
# at least at the time of this code being written
 | 
						|
 | 
						|
config_rsyslog_V8()
 | 
						|
{
 | 
						|
  
 | 
						|
  goLocal=0;
 | 
						|
  conf_file="/etc/rsyslog.conf"
 | 
						|
  remoteconf="/etc/rsyslog.d/remote.conf"
 | 
						|
 | 
						|
  # If this is a Management Node or Service Node, then it will be receiving syslog entries from the
 | 
						|
  # compute nodes. Management Node is receiving from Service Nodes and possibly compute nodes.
 | 
						|
  # They will all be put in /var/log/messages
 | 
						|
  # For the service node, if site table svloglocal  is set then we will keep the logs on the servicenode
 | 
						|
  # and not forward to the Management Node. 
 | 
						|
 | 
						|
  #now handling where the logs go, if goLocal=1 then log local, if not forward to MN
 | 
						|
  if [ -f /etc/xCATMN ]; then
 | 
						|
     goLocal=1
 | 
						|
  else
 | 
						|
    # check to see if service node should forward of keep logs
 | 
						|
    if [ $isSN -eq 1 ]; then
 | 
						|
       if [ -n "$SVLOGLOCAL" ] && [ $SVLOGLOCAL -eq 1 ]; then
 | 
						|
         goLocal=1  
 | 
						|
       fi
 | 
						|
    fi
 | 
						|
  fi
 | 
						|
 | 
						|
  if [ $goLocal -eq 1 ]; then
 | 
						|
    #logging is local, do not forward
 | 
						|
    #making sure all the messages goes to /var/log/messages
 | 
						|
    touch  /var/log/messages
 | 
						|
    # backup rsyslog.conf
 | 
						|
    if [ ! -f $conf_file.XCATORIG ]; then
 | 
						|
      cp -f $conf_file $conf_file.XCATORIG
 | 
						|
    fi
 | 
						|
 | 
						|
    grep "xCAT settings" $conf_file 2>&1 1> /dev/null
 | 
						|
    if [ $? -eq 0 ]; then
 | 
						|
	  sed "/# xCAT settings/,$ d" $conf_file >/tmp/sed.tmp
 | 
						|
      cat /tmp/sed.tmp >$conf_file
 | 
						|
    fi
 | 
						|
 | 
						|
    echo "# xCAT settings" >> $conf_file
 | 
						|
    echo "*.debug   /var/log/messages"  >> $conf_file
 | 
						|
  else
 | 
						|
    # not logging local, forward logging
 | 
						|
    # backup the existing remote.conf file from the install
 | 
						|
    if [ ! -f $remoteconf.XCATORIG ]; then
 | 
						|
      cp -f $remoteconf $remoteconf.XCATORIG
 | 
						|
    fi
 | 
						|
    # check if already an entry by xCAT. If so, we need to replace it
 | 
						|
    grep "xCAT settings" $remoteconf 2>&1 1> /dev/null
 | 
						|
    if [ $? -eq 0 ]; then
 | 
						|
       sed "/# xCAT settings/,$ d" $remoteconf >/tmp/sed.tmp
 | 
						|
       cat /tmp/sed.tmp >$remoteconf
 | 
						|
    fi
 | 
						|
 | 
						|
    # add xCAT entries
 | 
						|
    echo "# xCAT settings" >> $remoteconf
 | 
						|
    echo "*.* @$master" >> $remoteconf
 | 
						|
 fi
 | 
						|
 # restart syslog ( could be service or systemctl call depending on the OS)
 | 
						|
 restartservice syslog
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
#echo "NTYPE=$NTYPE,OSVER=$OSVER,OSTYPE=$OSTYPE"
 | 
						|
 | 
						|
if [ "$NTYPE" = service ]; then 
 | 
						|
  isSN=1
 | 
						|
fi
 | 
						|
 | 
						|
#if [ -e /etc/systemd ]; then
 | 
						|
#  systemdEnabled=1
 | 
						|
#fi
 | 
						|
 | 
						|
# check if this is rsyslog version 8,  setup is different no matter what OS.
 | 
						|
# We only update the /etc/rsyslog.d/remote.conf file to point to the xcatmaster.
 | 
						|
# Do not even touch rsyslog.conf
 | 
						|
# There is no /etc/sysconfig/rsyslog file, so we use  rsyslogd -v to get the version
 | 
						|
SYSLOGPROD=`rsyslogd -v | grep rsyslogd |awk {'print $1'}`
 | 
						|
SYSLOGVER=`rsyslogd -v | grep rsyslogd |awk {'print $2'}`
 | 
						|
if ( pmatch $SYSLOGPROD "*rsyslogd*" ) && ( pmatch $SYSLOGVER "8*" ); then
 | 
						|
  config_rsyslog_V8 
 | 
						|
#keep a record
 | 
						|
  logger -t xCAT -p local4.info "Install: rsyslog version 8 setup"
 | 
						|
  exit 0
 | 
						|
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*" ) || ( is_lsb_ubuntu ) || ( pmatch $OSVER "debian*" ); then
 | 
						|
    if [ -e /etc/rsyslog.conf ]; then
 | 
						|
      conf_file="/etc/rsyslog.conf"
 | 
						|
      sysconfig="/etc/sysconfig/rsyslog"
 | 
						|
      #init="/etc/init.d/rsyslog"
 | 
						|
      #if [ $systemdEnabled -eq 1 ]; then
 | 
						|
      #   init="rsyslog"
 | 
						|
      #fi
 | 
						|
      isRsyslog=1
 | 
						|
      if ( pmatch $OSVER "ubuntu*" ) || ( is_lsb_ubuntu ) || ( pmatch $OSVER "debian*" ); then
 | 
						|
        sysconfig="/etc/default/rsyslog"
 | 
						|
      fi
 | 
						|
    fi
 | 
						|
  else 
 | 
						|
    if ( pmatch $OSVER "sles*" ) || ( pmatch $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 ( pmatch $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 logging possible 
 | 
						|
if [ $isLinux -eq 1 ] && [ -e $sysconfig ]; then 
 | 
						|
  if [ ! -f "$sysconfig.XCATORIG" ]; then
 | 
						|
    cp -f $sysconfig $sysconfig.XCATORIG
 | 
						|
  fi
 | 
						|
 | 
						|
  #check if it is ryslog version 3, it has totally different settings in /etc/syslog.conf
 | 
						|
  if [ $isRsyslog -eq 1 ]; then
 | 
						|
    grep "SYSLOGD_OPTIONS" $sysconfig | grep -e "[\-c 3|\-c3|\-c4|\-c 4]" 2>&1 1> /dev/null
 | 
						|
    if [ $? -eq 0 ]; then
 | 
						|
      isC3=1
 | 
						|
    fi
 | 
						|
  fi
 | 
						|
  
 | 
						|
  #no need to change anything for rsyslog version 3 for /etc/sysconf/rsyslog
 | 
						|
  if [ $isC3 -eq 0 ]; then 
 | 
						|
    if [ -f /etc/xCATMN ]; then
 | 
						|
      #on MN: make the syslogd be able to receive remote logs 
 | 
						|
      awk  '{if($0 ~ /^SYSLOGD_OPTIONS=|^SYSLOGD_PARAMS=/) {
 | 
						|
            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=|^SYSLOGD_PARAMS=/) {
 | 
						|
              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=|^SYSLOGD_PARAMS=/) {
 | 
						|
              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
 | 
						|
fi  
 | 
						|
 | 
						|
 | 
						|
#syslog-ng has different way of enabling log forwarding
 | 
						|
if [ $ng -eq 1 ]; then
 | 
						|
  if [ $isSN -eq 1 -o -f /etc/xCATMN ]; then
 | 
						|
    if [ ! -f $conf_file.XCATORIG ];  then
 | 
						|
       cp -f $conf_file $conf_file.XCATORIG
 | 
						|
    fi
 | 
						|
    sed 's/#udp(ip("0.0.0.0/udp(ip("0.0.0.0/' $conf_file >/tmp/sed.tmp
 | 
						|
    cat /tmp/sed.tmp >$conf_file
 | 
						|
  fi
 | 
						|
fi
 | 
						|
 | 
						|
 | 
						|
 | 
						|
#now handling where the logs go
 | 
						|
goLocal=0;
 | 
						|
if [ -f /etc/xCATMN ]; then
 | 
						|
  goLocal=1
 | 
						|
else 
 | 
						|
  if [ $isSN -eq 1 ]; then
 | 
						|
     if [ -n "$SVLOGLOCAL" ] && [ $SVLOGLOCAL -eq 1 ]; then
 | 
						|
       goLocal=1  
 | 
						|
     fi
 | 
						|
  fi
 | 
						|
fi
 | 
						|
 | 
						|
if [ $isC3 -eq 1 ]; then 
 | 
						|
  config_Rsyslog_C3 $goLocal $conf_file
 | 
						|
else
 | 
						|
  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 2>&1 1> /dev/null
 | 
						|
      if [ $? -eq 0 ]; then
 | 
						|
	  sed "/# xCAT settings/,$ d" $conf_file >/tmp/sed.tmp
 | 
						|
      cat /tmp/sed.tmp >$conf_file
 | 
						|
      fi
 | 
						|
 | 
						|
      if [ $isLinux -eq 0 ]; then # aix
 | 
						|
          echo "# xCAT settings" >> $conf_file
 | 
						|
          echo "*.debug   /var/log/messages  rotate 1024K files 5" >> $conf_file
 | 
						|
      fi
 | 
						|
    else
 | 
						|
      # enable the settings that will log to local files in syslog-ng
 | 
						|
      sed -i '/destination messages/s/^#*//'  $conf_file
 | 
						|
      sed -i '/destination(messages)/s/^#*//'  $conf_file
 | 
						|
      sed -i '/destination warn/s/^#*//'  $conf_file
 | 
						|
      sed -i '/destination(warn)/s/^#*//'  $conf_file
 | 
						|
    fi
 | 
						|
    
 | 
						|
    #Ubuntu doesn't have sysconfig 
 | 
						|
    # so configuring the MN to receive UDP connections here.
 | 
						|
    if ( pmatch $OSVER "ubuntu*" ) || ( is_lsb_ubuntu ) || ( pmatch $OSVER "debian*" ); then
 | 
						|
      egrep \('^\$UDPServerRun 514'\|'^\$ModLoad imudp'\) $conf_file > /dev/null 2>&1;
 | 
						|
      if [ $? -eq 1 ]; then
 | 
						|
        echo "\$ModLoad imudp" >> $conf_file;
 | 
						|
        echo "\$UDPServerRun 514" >> $conf_file;
 | 
						|
      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 2>&1 1> /dev/null
 | 
						|
      if [ $? -eq 0 ]; then
 | 
						|
	  sed "/# xCAT settings/,$ d" $conf_file >/tmp/sed.tmp
 | 
						|
          cat /tmp/sed.tmp >$conf_file
 | 
						|
      fi
 | 
						|
      echo "# xCAT settings" >> $conf_file
 | 
						|
      echo "destination loghost { udp(\"$master\"); };" >> $conf_file
 | 
						|
      echo 'log { source(src); destination(loghost); };' >> $conf_file
 | 
						|
 
 | 
						|
      # remove the settings that will log to local files
 | 
						|
      sed -i '/destination messages/s/^/#/'  $conf_file
 | 
						|
      sed -i '/destination(messages)/s/^/#/'  $conf_file
 | 
						|
      sed -i '/destination warn/s/^/#/'  $conf_file
 | 
						|
      sed -i '/destination(warn)/s/^/#/'  $conf_file
 | 
						|
    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
 | 
						|
        if ( pmatch $OSVER "ubuntu*" ) || ( is_lsb_ubuntu ) || ( pmatch $OSVER "debian*" ); then
 | 
						|
          echo "\$ModLoad imuxsock" >> $conf_file
 | 
						|
          echo "*.* @$master" >> $conf_file
 | 
						|
        else
 | 
						|
          echo "*.* @$master" >> $conf_file
 | 
						|
        fi 
 | 
						|
      fi
 | 
						|
    fi
 | 
						|
  fi
 | 
						|
fi
 | 
						|
 | 
						|
#restart the syslog daemon to take the new conf file settings
 | 
						|
if [ $isLinux -eq 0 ]; then
 | 
						|
  PARSE_SRC_STATE="-e1d;s/.* \([a-zA-Z0-9]*\)$/\1/"
 | 
						|
  state=$(LC_ALL=C lssrc -s syslogd | LC_ALL=C sed "$PARSE_SRC_STATE")
 | 
						|
  if [ -n "$state" ] && [ "$state" = "active" ]; then
 | 
						|
     stopsrc -s syslogd
 | 
						|
  fi
 | 
						|
     
 | 
						|
  #wait for syslogd to fully started
 | 
						|
  RETRY_LIMIT=30          # number of 2 second retry intervals (60 second total)
 | 
						|
  i=$RETRY_LIMIT
 | 
						|
  while :
 | 
						|
  do
 | 
						|
      ret=`LC_ALL=C startsrc -s syslogd 2>&1`
 | 
						|
      if ( pmatch $ret "*PID*" ); then
 | 
						|
        break
 | 
						|
      fi
 | 
						|
 | 
						|
      i=$((i - 1))
 | 
						|
      if [ $i -gt 0 ]; then
 | 
						|
          sleep 2
 | 
						|
      else
 | 
						|
          break
 | 
						|
      fi
 | 
						|
  done
 | 
						|
else
 | 
						|
  #if [ $systemdEnabled -eq 1 ]; then 
 | 
						|
  #  systemctl restart $init.service 
 | 
						|
  #else
 | 
						|
  #  $init restart
 | 
						|
  #fi
 | 
						|
  restartservice syslog
 | 
						|
fi
 | 
						|
 | 
						|
#keep a record
 | 
						|
logger -t xCAT -p local4.info "Install: syslog setup"
 | 
						|
exit 0
 |