User Tools

Site Tools


aix:scripts_customize_aix

Script for AIX customization

cat customize_aix.sh

#!/bin/ksh93
#set -x
##################################################
#@(#) customize AIX
# version 1.0 Manu 02-2019
# version 1.1 Manu 10-2019

sn=$(basename $0)
logpath=/root/scripts/log
logname=$logpath/$sn.log
p_id=$$
HOST_NAME=$(/usr/bin/hostname -s)

script_path=/root/scripts
script_path_log=${script_path}/logs

#Mail
sendmail_ds="mysmtpserver.lan"
sendmail_dj=""

#DNS
dns_server="1.2.3.4 2.5.6.8"
dns_domain="gggg.com"
dns_search="ggg.com aaa.com bbb.be"
dns_options="options timeout:1;options attempts:1;options rotate"

#NFSv4
nfsv4dom="nfsv4_dom"

# NTP servers
ntp_server="ntp1 ntp2"

# Manage exceptions
if [ -f /usr/ios/cli/ioscli ]
then
  TYPE=VIOS
else
  if [ -f /usr/sbin/lsnim ]
  then
    TYPE=NIM
  else
   TYPE=AIX
  fi
fi

if [[ "${HOST_NAME}" == "syslog1" || "${HOST_NAME}" == "syslog2" ]]
then
  TYPE=SYSLOGSERVER
fi


#------------------------------------------------
# usage ()
#------------------------------------------------
usage()
{
echo "Usage: (" "|-v|-f)"
echo "\tCustomize AIX server"
echo "\t-v: verbose (default yes)"
echo "\t-q: ask for every changes"
echo "\t-f: apply changes"
}

#------------------------------------------
confirm ()
{
# ask for a confirmation for each change
if [ "$query" == "none" ]
then
  execute=false
  echo "Change [y/n] ?"; read answer
  case "$answer" in
       y|Y|yes) execute=true ;;
       *)     execute=false ;;
  esac
fi
}

#------------------------------------------
lsrights ()
{
# print the file or folder rights
value=$1
if [ -d $value ]
then
  ls -ld $value | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o ",k);print}' | awk '{print $1}'
else
  if [ -f $value ]
  then
    begin=$(echo $value | rev | cut -d'/' -f2- | rev)
    if [ "$begin" == "" ]
    then
      begin="/"
    fi
    end=$(echo $value | rev | cut -d'/' -f1 | rev)
    ls -l $begin | sed 's/$/|/' | grep " $end|" | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf("%0o ",k);print}' | awk '{print $1}'
  else
    echo "ERROR"
  fi
fi
}

#------------------------------------------
filesystem ()
{
# Create filesystems
echo "#************************"
echo "#** Create filesystems **"
echo "#************************"

echo "\n"
if [ "$TYPE" == "VIOS" ]
then
  set -A lv_name corelv 
  set -A fs_name "/var/core" 
  set -A fs_size 1G 
else
  set -A lv_name rootlv corelv 
  set -A fs_name "/root" "/var/core" 
  set -A fs_size 256M 1G 
fi

echo "# Creating FS ${fs_name[*]}"
echo "#========================"

num=${#lv_name[*]}

COPIES_LV=`lslv hd5 | grep COPIES | awk '{ print $2 }'`

cnt=0
while [ $cnt -lt $num ]
do
  df "${fs_name[$cnt]}" 2> /dev/null | grep "${fs_name[$cnt]}" | grep -v Filesystem > /dev/null 2>&1
  if [ $? -ne 0 ]
  then
    printf "\E[31;1m""# Creating filesystem ${fs_name[$cnt]}"" $1\E[0m\n"
    confirm; ($execute) && mklv -t jfs2 -c $COPIES_LV -y ${lv_name[$cnt]} rootvg ${fs_size[$cnt]}
    ($execute) && crfs -v jfs2 -m "${fs_name[$cnt]}" -d ${lv_name[$cnt]} -Ayes -a log=INLINE
    ($execute) && mount "${fs_name[$cnt]}"
  else
   printf "\E[32;1m""# Filesystem ${fs_name[$cnt]} exist OK"" $1\E[0m\n"
  fi
  let cnt="($cnt +1)"
done

if [ ! -d ${script_path_log} ]
then
  printf "\E[31;1m""# Creating directory ${script_path_log}"" $1\E[0m\n"
  confirm; ($execute) && mkdir -p ${script_path_log}
else
  printf "\E[32;1m""# Directory ${script_path_log} exist OK"" $1\E[0m\n"
fi

if [ "$TYPE" == "VIOS" ]
then
  if [ ! -d /home/padmin/vios_advisor ]
  then
    mkdir /home/padmin/vios_advisor
    chown padmin.staff /home/padmin/vios_advisor
  fi
  if [ -d /mksys ]
  then
    if [ $(ls -l / | grep mksysb | grep -q padmin; echo $?) -ne 0 ]
    then
      chown padmin /mksysb
    fi
  fi
fi

if [ -d /var/core ]
then
  if [ $(lsrights /var/core) != "777" ]
  then
    printf "\E[31;1m""# Change /var/core rights"" $1\E[0m\n"
    confirm; ($execute) && chmod 777 /var/core
  else
    printf "\E[32;1m""# Rights on /var/core OK"" $1\E[0m\n"
  fi
else
  printf "\E[32;1m""# /var/core doesn't exist ERROR"" $1\E[0m\n"
fi

# Change base filesystem to a minimum size
echo "\n"
echo "# Change base filesystem to a minimum size if needed"
echo "#========================"
set -A fs_name "/" "/tmp" "/var" "/home" "/opt" "/root" "/var/core"
set -A fs_size 512M 1G 2G 512M 2G 512M 1G

num=${#fs_name[*]}

cnt=0
while [ $cnt -lt $num ]
do
  if [ $(df -m "${fs_name[$cnt]}" 2>/dev/null | grep -q "${fs_name[$cnt]}"; echo $?) -eq 0 ]
  then
    val1=$(echo ${fs_size[$cnt]} | sed 's/T/\*1048576/' |sed 's/G/\*1024/' | sed 's/M//')
    val=$(echo "scale=0;$val1" | bc)
    sz=$(df -m "${fs_name[$cnt]}" | grep '^/dev/' | grep -v Filesystem | awk '{print $2}' | cut -d"." -f1)
    if [ "$sz" -lt "$val" ]
    then
      printf "\E[31;1m""# chfs -a size=${fs_size[$cnt]} ${fs_name[$cnt]}"" $1\E[0m\n"
      confirm; ($execute) && chfs -a size=${fs_size[$cnt]} ${fs_name[$cnt]}
    else
      printf "\E[32;1m""# Filesystem ${fs_name[$cnt]} size OK"" $1\E[0m\n"
    fi
  fi
  let cnt="($cnt +1)"
done

echo "\n"
}

#------------------------------------------
system ()
{
# Change system parameters
echo "#******************************"
echo "#** Change system parameters **"
echo "#******************************"
echo
echo "# Root settings"
echo "#========================"

usr=root
if [ "$TYPE" != "VIOS" ]
then
  set -A user_param home fsize data shell
  set -A user_value "/root" "-1" "-1" "/usr/bin/ksh93"
else
  set -A user_param pgrp fsize data
  set -A user_value "system" "-1" "-1"
fi

num=${#user_param[*]}

cnt=0
while [ $cnt -lt $num ]
do
  if [ $(lsuser -a "${user_param[$cnt]}" $usr | cut -d'=' -f2) != "${user_value[$cnt]}" ]
  then
    printf "\E[31;1m""chuser ${user_param[$cnt]}=${user_value[$cnt]} $usr"" $1\E[0m\n"
    confirm; ($execute) && chuser "${user_param[$cnt]}"="${user_value[$cnt]}" $usr
  else
    printf "\E[32;1m""# Parameter for $usr ${user_param[$cnt]} OK"" $1\E[0m\n"
  fi
  let cnt="($cnt +1)"
done
#
val=$(lscore -d | sed 's/\ //g' | grep corefilelocation | cut -d':' -f2)
if [ "$val" != "/var/core" ]
then
  printf "\E[31;1m""chcore -c on -p on -l /var/core -n on -d"" $1\E[0m\n"
  confirm; ($execute) && chcore -c on -p on -l /var/core -n on -d
else
  printf "\E[32;1m""# Redirect core to /var/core OK"" $1\E[0m\n"
fi
#
val=$(syscorepath -g)
if [ "$val" != "/var/core" ]
then
  printf "\E[31;1m""# syscorepath -p /var/core"" $1\E[0m\n"
  confirm; ($execute) && syscorepath -p /var/core
else
  printf "\E[32;1m""# Redirect system core to /var/core OK"" $1\E[0m\n"
fi
if [ $(lsitab syscore > /dev/null 2>&1; echo $?) -ne 0 ]
then
  printf "\E[31;1m""# syscorepath needs to be set at startup"" $1\E[0m\n"
  confirm; ($execute) && mkitab "syscore:23:once:/etc/rc.syscore > /dev/console 2>&1"
  ($execute) && if [ ! -f /etc/rc.syscore ]
  then
    cat > /etc/rc.syscore << EOF
# Set core path for system
if [ -d /var/core ]
then
  syscorepath -p /var/core
  if [ \$? -eq 0 ]
  then
    echo "syscorepath OK"
  fi
else
  echo "**** ERROR /var/core doesn t exist"
fi
EOF
    chmod u+x /etc/rc.syscore
  fi
else
  printf "\E[32;1m""# syscorepath is set OK"" $1\E[0m\n"
fi

#
if [ "$TYPE" != "VIOS" ]
then
  if [ ! -f ~root/.profile ]
  then
    printf "\E[31;1m""# Create /root/.profile"" $1\E[0m\n"
    confirm; ($execute) && cat > /root/.profile << EOF
EDITOR=/usr/bin/vi
HOSTNAME=\$(hostname)
PS1="[\\\$LOGNAME@\\\$HOSTNAME]\\\$PWD# "
export EDITOR HOSTNAME PS1

if [ \$(tty | awk '{print \$1}' | egrep -q "Global|pts" ; echo \$?) -eq 0 ]
then
  stty erase ^?
fi

export PATH=/usr/local/sbin:\$PATH
export MANPATH=/usr/share/man:/usr/lpp/X11/man:/opt/freeware/man:\$MANPATH

. ~root/.profile_root

# Specific (add your custom entries)
EOF
  else
    printf "\E[32;1m""# File /root/.profile exist OK"" $1\E[0m\n"
  fi

  if [ ! -f /root/.profile_root ]
  then
    printf "\E[31;1m""# Create /root/.profile_root"" $1\E[0m\n"
    confirm; ($execute) && cat > /root/.profile_root << EOF
# version 1.3 2019-02
set -o vi
alias ll='ls -lsa'
alias lll='/usr/linux/bin/ls -lsa --color=auto'
alias lsvscsi='echo "cvai" | kdb | grep vscsi'
alias lsvfcs='echo "vfcs" | kdb | grep fcs'
alias lsdisk='${script_path}/pcmpathq.sh'
EOF
  else
    printf "\E[32;1m""# File /root/.profile_root exist OK"" $1\E[0m\n"
  fi

  if [ ! -f /root/.bashrc ]
  then
    printf "\E[31;1m""# Create /root/.bashrc"" $1\E[0m\n"
    confirm; ($execute) && cat > /root/.bashrc << EOF
EDITOR=/usr/bin/vi
HOSTNAME=\$(hostname)
PS1="[\\\$LOGNAME@\\\$HOSTNAME]\\\$PWD# "
export EDITOR HOSTNAME PS1

if [ \$(tty | awk '{print \$1}' | egrep -q "Global|pts" ; echo \$?) -eq 0 ]
then
  stty erase ^?
fi

export PATH=/usr/local/sbin:\$PATH
export MANPATH=/usr/share/man:/usr/lpp/X11/man:/opt/freeware/man:\$MANPATH

. ~root/.profile_root
echo "BASH"

# Specific (add your custom entries)
EOF
  else
    printf "\E[32;1m""# File /root/.bashrc exist OK"" $1\E[0m\n"
  fi
fi

echo "\n"
echo "# Check users settings"
echo "#========================"
if [ $(pwdck -n ALL > /dev/null 2>&1; echo $?) -ne 0 ]
then
  printf "\E[31;1m""# pwdck -y ALL"" $1\E[0m\n"
  confirm; ($execute) && pwdck -y ALL
else
  printf "\E[32;1m""# pwdck OK"" $1\E[0m\n"
fi
if [ $(grpck -n ALL > /dev/null 2>&1; echo $?) -ne 0 ]
then
  printf "\E[31;1m""# grpck -y ALL"" $1\E[0m\n"
  confirm; ($execute) && grpck -y ALL
else
  printf "\E[32;1m""# grpck OK"" $1\E[0m\n"
fi
echo "\n"

if [ $(grep -q "NUM_PARALLEL_LPS" /etc/environment; echo $?) -ne 0 ]
then
  printf "\E[31;1m""# Add parameter NUM_PARALLEL_LPS to /etc/environment"" $1\E[0m\n"
  confirm; ($execute) &&  cat >> /etc/environment << EOF

# VG mirroring parallelism
NUM_PARALLEL_LPS=12
EOF
else
  printf "\E[32;1m""# Parameter NUM_PARALLEL_LPS to /etc/environment OK"" $1\E[0m\n"
fi

echo "# System settings"
echo "#========================"
if [ $(grep -q "TZ=Europe/Luxembourg" /etc/environment; echo $?) -ne 0 ]
then
  printf "\E[31;1m""# Time zone need to be changed"" $1\E[0m\n"
  confirm; ($execute) &&  chtz 'Europe/Luxembourg'
else
  printf "\E[32;1m""# Time Zone OK"" $1\E[0m\n"
fi

if [ "$(lsattr -El sys0 -a maxuproc | awk '{print $2}')" -lt "8192" ]
then
  printf "\E[31;1m""# Changing max process per user"" $1\E[0m\n"
  confirm; ($execute) && chdev -l sys0 -a maxuproc=8192
else
  printf "\E[32;1m""# Max number of process per user OK"" $1\E[0m\n"
fi

if [ "$(lsattr -El sys0 -a max_logname | awk '{print $2}')" -lt "256" ]
then
  printf "\E[31;1m""# Changing max logname"" $1\E[0m\n"
  confirm; ($execute) && chdev -l sys0 -a max_logname=256
else
  printf "\E[32;1m""# Max_logname OK"" $1\E[0m\n"
fi

if [ "$(lsattr -El sys0 -a ncargs | awk '{print $2}')" -lt "1024" ]
then
  printf "\E[31;1m""# Changing ncargs maximum argument in a line"" $1\E[0m\n"
  confirm; ($execute) && chdev -l sys0 -a ncargs=1024
else
  printf "\E[32;1m""# ncargs OK"" $1\E[0m\n"
fi

if [ `echo $(lsattr -El iocp0;lsdev -Cc iocp  ) | tr ' ' '\n' | grep -i available | wc -l | awk '{print $1}'` != "2" ]
then
  chdev -l iocp0 -a autoconfig='available'
  mkdev -l iocp0
fi

if [ "$TYPE" == "VIOS" ]
then
  cat > /tmp/exclude.tmp << EOF
/.rhosts
/etc/niminfo
/var/vio/CM/DB/
^./tmp/
^./mnt/
^./audit/
^./mksysb/
^./usr/sysload/*.idx
^./usr/sysload/*.dat
^./var/vio/VMLibrary/
^./home/padmin/vios_advisor/
EOF
else
    cat > /tmp/exclude.tmp << EOF
^./mnt/
^./tmp/
^./wpars/
^./audit/
^./mksysb/
^./var/core/
^./tftpboot/
^./software/
^./usr/sys/inst.images/
^./var/adm/nfsv4/sm4.grace
EOF
fi

if [ -f /etc/exclude.rootvg ]
then
  sdiff -s /etc/exclude.rootvg /tmp/exclude.tmp | grep '>' | awk -F'>' '{print $2}' | awk '{print $1}' > /tmp/exclude.diff
  if [ -s /tmp/exclude.diff ]
  then
    printf "\E[31;1m""# Add entries into /etc/exclude.rootvg"" $1\E[0m\n"
    confirm; ($execute) && cat /tmp/exclude.diff >> /etc/exclude.rootvg
  else
    printf "\E[32;1m""# File /etc/exclude.rootvg exist OK"" $1\E[0m\n"
  fi
  rm /tmp/exclude.diff
else
  printf "\E[31;1m""# Creating file /etc/exclude.rootvg"" $1\E[0m\n"
  confirm; ($execute) && cp /tmp/exclude.tmp /etc/exclude.rootvg
fi
rm /tmp/exclude.tmp
echo "\n"

echo "\n"
echo "# Check /etc/profile"
echo "#========================"

# Check /etc/profile
cat > /tmp/profile.tmp << EOF
HOSTNAME=\$(/usr/bin/hostname -s)
PS1="[\\\$LOGNAME@\\\$HOSTNAME]\\\$PWD$ "
export PS1

EDITOR=/usr/bin/vi
export EDITOR

export EXTENDED_HISTORY=ON
export HISTSIZE=10000

alias ll='ls -lsa'
EOF

  cat /etc/profile | grep -v "trap 1 2 3" | sed '/^$/d' > /tmp/profile.tmp2
  sdiff -s /tmp/profile.tmp2 /tmp/profile.tmp | grep -v '<' | grep '>' | cut -d'>' -f2- | sed 's/^\ *//g' | sed '/^$/d' > /tmp/profile.diff
  sdiff -s /tmp/profile.tmp2 /tmp/profile.tmp | grep -v '<' | grep '|' | cut -d'|' -f2- | sed 's/^\ *//g' | sed '/^$/d' >> /tmp/profile.diff
  if [ -s /tmp/profile.diff ]
  then
    printf "\E[31;1m""# Add entries into /etc/profile"" $1\E[0m\n"
    confirm; ($execute) && cat /etc/profile | grep -v "trap 1 2 3" > /tmp/profile.tmp1;($execute) && mv /tmp/profile.tmp1 /etc/profile;($execute) && cat /tmp/profile.diff >> /etc/profile; ($execute) && printf '\ntrap 1 2 3\n' >> /etc/profile; ($execute) && chmod 555 /etc/profile; ($execute) && chown bin.bin /etc/profile
  else
    printf "\E[32;1m""# File /etc/profile OK"" $1\E[0m\n"
  fi
  rm /tmp/profile.diff
rm /tmp/profile.tmp*

echo "\n"
}

#------------------------------------------
netsvc ()
{
# Change /etc/netsvc.conf
echo "#**********************************"
echo "#** Change file /etc/netsvc.conf **"
echo "#**********************************"
echo
echo "# Configure /etc/netsvc.conf"
echo "#========================"

if [ $(cat /etc/netsvc.conf | grep -v "^#" | egrep "hosts|=|local|bind" >/dev/null; echo $?) -ne 0 ]
then
  printf "\E[31;1m""# Add search order into /etc/netsvc.conf"" $1\E[0m\n"
  confirm; ($execute) && cat /etc/netsvc.conf | grep "^#" > /etc/netsvc.conf.${p_id}
  ($execute) && echo "hosts=local,bind4" >> /etc/netsvc.conf.${p_id}
  ($execute) && mv /etc/netsvc.conf.${p_id} /etc/netsvc.conf
else
  printf "\E[32;1m""# Parameter ORDER to /etc/netsvc.conf OK"" $1\E[0m\n"
fi

echo "\n"
}

#------------------------------------------
resolv ()
{
# Change /etc/resolv.conf
echo "#**********************************"
echo "#** Change file /etc/resolv.conf **"
echo "#**********************************"
echo
echo "# Configure /etc/resolv.conf"
echo "#========================"

status=0

if [ ! -f /etc/resolv.conf ]
then
  touch /etc/resolv.conf
fi

for server in $(echo ${dns_server} | sed 's/,/\ /g')
do
  if [ $(cat /etc/resolv.conf | grep "nameserver" | grep -q "${server}"; echo $?) -ne 0 ]
  then
    printf "\E[31;1m""# Add server into /etc/resolv.conf"" $1\E[0m\n"
    confirm; ($execute) && cp /etc/resolv.conf /etc/resolv.conf.${p_id}
    ($execute) &&  echo "nameserver ${server}" >> /etc/resolv.conf
    ((status = status +1))
  fi
done

if [ "${dns_domain}" != "" ]
then
  if [ $(cat /etc/resolv.conf | grep "domain" | egrep -q "${dns_domain}"; echo $?) -ne 0 ]
  then
    printf "\E[31;1m""# Add domain into /etc/resolv.conf"" $1\E[0m\n"
    confirm; ($execute) &&  echo "domain ${dns_domain}" >> /etc/resolv.conf
    ((status = status +1))
  fi
fi

search=$(echo ${dns_search} | sed 's/,/\ /g' | tr -s " ")
if [ "${dns_search}" != "" ]
then
  val=$(echo $search | sed 's/\ /|/g')
  if [ $(cat /etc/resolv.conf | grep search | egrep -q "${val}"; echo $?) -ne 0 ]
  then
    printf "\E[31;1m""# Add search into /etc/resolv.conf"" $1\E[0m\n"
    confirm; ($execute) &&  echo "search ${search}" >> /etc/resolv.conf
    ((status = status +1))
  fi
fi

if [ "${dns_options}" != "" ]
then
  for option in $(echo ${dns_options} | tr ';' '\n' | sed 's/\ /|/g')
  do
    if [ $(cat /etc/resolv.conf | sed 's/'"$(echo '\011')"'/\ /g' | tr -s ' ' | sed 's/\ /|/g' | grep -q "$option"; echo $?) -ne 0 ]
    then
      printf "\E[31;1m""# Add option $option into /etc/resolv.conf"" $1\E[0m\n"
      confirm; ($execute) && echo $option | sed 's/|/\ /g' >> /etc/resolv.conf
      ((status = status +1))
    fi
  done
fi

if [ "$status" -eq "0" ]
then
  printf "\E[32;1m""# Parameters in /etc/resolv.conf OK"" $1\E[0m\n"
fi

echo "\n"
}

#------------------------------------------
nfsv4 ()
{
# Change /etc/nfs/local_domain
echo "#***************************************"
echo "#** Change file /etc/nfs/local_domain **"
echo "#***************************************"
echo
echo "# Configure /etc/nfs/local_domain"
echo "#========================"

if [ $(chnfsdom | cut -d ':' -f2 | grep -q "$nfsv4dom"; echo $?) -eq 0 ]
then
  printf "\E[32;1m""# NFSv4 domain /etc/nfs/local_domain OK"" $1\E[0m\n"
else
  printf "\E[31;1m""# Change NFSv4 domain"" $1\E[0m\n"
  confirm; ($execute) && chnfsdom $nfsv4dom ; ($execute) && stopsrc -g nfs; ($execute) && startsrc -g nfs
fi
}

#------------------------------------------
sendmail ()
{
# Change /etc/sendmail.cf
echo "#**********************************"
echo "#** Change file /etc/sendmail.cf **"
echo "#**********************************"
echo
echo "# Configure /etc/sendmail.cf"
echo "#========================"

if [ "$(grep '^DS' /etc/sendmail.cf | grep -v '^#' | sed 's/^DS//' | awk '{print $1}')" != "${sendmail_ds}" ]
then
  printf "\E[31;1m""# Add SMTP server to file /etc/sendmail.cf"" $1\E[0m\n"
  confirm; ($execute) && cp /etc/mail/sendmail.cf /etc/mail/sendmail.cf.${p_id}
  ($execute) && cat /etc/mail/sendmail.cf | sed "s/^DS/DS${sendmail_ds}/" > /tmp/sendmail.cf.tmp
  if [ "${sendmail_dj}" != "" ]
  then
    ($execute) && cat /tmp/sendmail.cf.tmp | perl -pe "s/^#Dj*./$&\nDj${sendmail_dj}/" > /etc/mail/sendmail.cf
  else
    ($execute) && mv /tmp/sendmail.cf.tmp /etc/mail/sendmail.cf
  fi
else
  printf "\E[32;1m""# Parameter DS from /etc/sendmail.cf OK"" $1\E[0m\n"
fi

echo "\n"
}

#------------------------------------------
syslog ()
{
# Change /etc/syslog.conf
echo "#**********************************"
echo "#** Change file /etc/syslog.conf **"
echo "#**********************************"
echo
echo "# Configure /etc/syslog.conf"
echo "#========================"

($execute) && cp /etc/syslog.conf /etc/syslog.conf.${p_id}

cat > /tmp/syslog.tmp << EOF
*.emerg /var/log/syslog/emerg.log rotate size 500k files 4 compress
*.alert /var/log/syslog/alert.log rotate size 500k files 4 compress
*.crit /var/log/syslog/crit.log rotate size 500k files 4 compress
*.err /var/log/syslog/error.log rotate size 500k files 4 compress
*.warning /var/log/syslog/warning.log rotate size 500k files 4 compress
*.notice /var/log/syslog/notice.log rotate size 500k files 4 compress
*.info /var/log/syslog/info.log rotate size 500k files 4 compress
*.debug /var/log/syslog/debug.log rotate size 500k files 4 compress
auth,authpriv.debug /var/log/syslog/auth.log rotate size 1m files 4 compress
EOF

if [ "$TYPE" != "SYSLOGSERVER" ]
then
  cat >> /tmp/syslog.tmp << EOF
auth,authpriv.debug @syslogserver
*.warning @syslogserver
EOF
fi

status=0
for line1 in $(cat /tmp/syslog.tmp | awk '{print $2}')
do
  if [ $(cat /etc/syslog.conf | grep -v '^#' | grep -q "$line1"; echo $?) -ne 0 ]
  then
    printf "\E[31;1m""# Add line $line1 into /etc/syslog.conf"" $1\E[0m\n"
    confirm; ($execute) && cat /tmp/syslog.tmp | sed 's/\ /;/2' | sed 's/$/;/' | grep "$line1;" | sed 's/;/\ /g' >> /etc/syslog.conf
    ((status = status +1))
  fi
done

if [ "$status" -eq "0" ]
then
  printf "\E[32;1m""# Parameters in /etc/syslog.conf OK"" $1\E[0m\n"
fi

for syslog_path in $(cat /etc/syslog.conf | grep -v "^#" | awk '{print $2}' | grep '/' | rev | cut -d'/' -f2- | rev | sort -u)
do
  if [ ! -d ${syslog_path} ]
  then
    mkdir -p ${syslog_path}
  fi
done
for file1 in $(cat /etc/syslog.conf | grep -v "^#" | awk '{print $2}' | grep '/' | sed '/^$/d')
do
  if [ ! -f ${file1} ]
  then
    touch $file1
  fi
done

if [ $(grep "^start " /etc/rc.tcpip | grep -q "syslogd"; echo $?) -ne 0 ]
then
  printf "\E[31;1m""# Enable syslogd"" $1\E[0m\n"
  confirm; ($execute) && chrctcp -S -a syslogd
fi

if [ "$TYPE" != "SYSLOGSERVER" ]
then
  if [ $(odmget -q subsysname="syslogd" SRCsubsys | grep cmdargs | cut -d'=' -f2- | grep '\-r' | grep '\-n' > /dev/null 2>&1; echo $?) -ne 0 ]
  then
    printf "\E[31;1m""# Activate syslogd as client"" $1\E[0m\n"
    confirm; ($execute) && chssys -s syslogd -a "-r -n"
  else
    printf "\E[32;1m""# Syslog started with option -r and -n OK"" $1\E[0m\n"
  fi
fi

echo "\n"
}

#------------------------------------------
ntp ()
{
# Change /etc/ntp.conf
echo "#**********************************"
echo "#** Change file /etc/ntp.conf **"
echo "#**********************************"
echo
echo "# NTP Configuration"
echo "#========================"

# Add NTP servers for Time synchronization
if [ "$TYPE" == "VIOS" ]
then
  ntpdir=/home/padmin/config
else
  ntpdir=/etc
fi

ntpsrv=$(echo ${ntp_server} | sed 's/,/\ /g' | tr -s ' ' | sed 's/\ /|/g')
if [ $(cat $ntpdir/ntp.conf | grep -v '^#' | egrep -q "$ntpsrv"; echo $?) -ne 0 ]
then
  printf "\E[31;1m""# NTP need to be updated"" $1\E[0m\n"
  confirm; ($execute) && cp $ntpdir/ntp.conf /tmp/ntp.conf.${p_id}
  ($execute) && cat /tmp/ntp.conf.${p_id} | egrep "^#|/" > $ntpdir/ntp.conf
  for srv in $(echo ${ntp_server} | sed 's/,/\ /g' | tr -s ' ')
  do
    ($execute) && echo "server $srv" >> $ntpdir/ntp.conf
  done
else
  printf "\E[32;1m""# NTP config OK"" $1\E[0m\n"
fi

if [ $(grep "^start " /etc/rc.tcpip | grep -q "xntpd"; echo $?) -ne 0 ]
then
  printf "\E[31;1m""# Enable xntpd"" $1\E[0m\n"
  confirm; ($execute) && chrctcp -S -a xntpd
fi

echo "\n"
}

#------------------------------------------
rpm_installed ()
{
# Check rpm installed
echo "#**********************************"
echo "#** Check RPM packages installed **"
echo "#**********************************"
echo
echo "# RPM packages"
echo "#========================"

RPMS=$(rpm -qa | sort)
for pkg in bash lsof coreutils logrotate sed yum
do
  if [ $(echo $RPMS | grep -q "${pkg}-"; echo $?) -eq 0 ]
  then
    printf "\E[32;1m""# RPM package : $pkg installed OK"" $1\E[0m\n"
  else
    if [ $(lslpp -Lc | cut -d':' -f1 | cut -d'.' -f1 | sort -u | grep -q "^${pkg}"; echo $?) -eq 0 ]
    then
      printf "\E[32;1m""# RPM package : $pkg installed OK"" $1\E[0m\n"
    else
      printf "\E[31;1m""# RPM package : $pkg not found"" $1\E[0m\n"
    fi
  fi
done

echo "\n"
}

###########################################
# MAIN
###########################################

# Read and check scripts arguments
execute=false #preview only
while [ $# -gt 0 ]
do
   case "$1" in
      -f) execute=true ;;
      -v) execute=false ;;
      -q) query=none ;;
      -h|help) usage
               exit 1;;
   esac
   shift
done

filesystem
system
netsvc
resolv
sendmail
syslog
ntp
nfsv4
rpm_installed

for file1 in "/.rhosts" "/save_bosinst.data_file" "/.SPOT" "/.rnd"
do
  [ -e $file1 ] && rm -r $file1
done

if [ "$TYPE" != "VIOS" ]
then
  for file1 in "/.sh_history" "/.vi_history" "/smit*"
  do
    [ -e $file1 ] && rm -r $file1
  done
fi
aix/scripts_customize_aix.txt · Last modified: 2021/01/01 21:21 (external edit)