Using no argument, verbose only, with -f for fix (apply)
[root@nimsrv]/root/scripts# cat upgrade_aix.sh
#!/usr/bin/ksh93 # set -x ################################################## #@(#) Upgrade AIX ################################################## # v1.1 06-2023 add verbose default ################################################## dir=`dirname $0` if [ -f $dir/.env ] then . $dir/.env else path_script=$dir export sn=`basename $0 | cut -d. -f1` export logpath=/tmp export logname=$logpath/$sn.log fi aixleveltl=$(echo ${aixmain}${tl} | sed 's/\(.\)/\1\./g') localmpt=/mnt nimserver=aixna001 # Server containing RPM and export NFS nimrpm=/export/aix7200-05/aix7200-05-07_lpp # location on NFS mount point Ex: /export/softs/rpm/aix71 #------------------------------------------------ usage() { echo "Usage: (" "|-f)" echo "\tInstall BASE RPM package, and check if upgrades are needed" echo "\t-f: fix apply RPM (default no)" } #------------------------------------------------ nfs_mount () { echo "###### NFS mount" oslevel -s mount -o vers=4,soft $nimserver:$nimrpm $localmpt } #------------------------------------------------ altdisk () { cfgmgr altpv=$(lsmpio -q | grep '_ROOTVG_ALT' | awk '{print $1}') if [[ "$altpv" == "" ]] then echo "#### ERROR NO DISK FOUND for ALTERNATE" exit 1 fi for vg in $(lsvg | grep rootvg | egrep 'alt_|old_') do exportvg $vg done alt_disk_copy -d $altpv -B } #------------------------------------------------ remove_efix () { # Remove only efix that won't be present at the end cat $localmpt/efix/install_efix.sh | grep emgr | rev | cut -d'/' -f1 | rev | cut -d'.' -f1 | sort -u > $tempfile.1 emgr -P | grep installp | rev | awk '{print $1}' | rev | sort -u > $tempfile.2 sdiff -w 80 $tempfile.1 $tempfile.2 | grep '>' | awk '{print $1}' > $tempfile for efix in $(cat $tempfile) do echo "###### $efix" emgr -rL $efix done } #------------------------------------------------ update_aix () { echo "###### Update AIX" install_all_updates -d $localmpt -rc -Y echo 1 | $localmpt/license/idsLicense installp -agXY -d $localmpt GSKit8.gskcrypt64 GSKit8.gskssl64 installp -agXY -d $localmpt idsldap.clt32bit64.rte idsldap.clt64bit64.rte idsldap.clt_max_crypto32bit64.rte idsldap.clt_max_crypto64bit64.rte idsldap.cltbase64.adt idsldap.cltbase64.rte idsldap.license64.rte emgr -e $localmpt/openssh_fix15/38408m9b.230811.epkg.Z } #------------------------------------------------ check_free_space () { echo "###### Check free space on /opt" if [ $(df -mc | grep '/dev/hd10opt' | cut -d':' -f3 | sed 's/\./\ /' | awk '{print $1}') -lt "300" ] then echo "extending /opt" chfs -a size=+300M /opt else echo "Filesystem /opt OK" fi } #------------------------------------------------ update_rpm () { echo "###### Update RPM" sudo=$(rpm -qa | grep sudo) if [ $(echo $sudo | grep -q 'sudo_ids'; echo $?) -ne "0" ] then yum -y remove $sudo yum -y install sudo_ids fi yum -y update /usr/sbin/updtvpkg } #------------------------------------------------ restart_services () { stopsrc -s nimsh ; startsrc -s nimsh stopsrc -g rsct_rm ; stopsrc -g rsct ; startsrc -g rsct ; startsrc -g rsct_rm stopsrc -s xntpd ; startsrc -s xntpd stopsrc -s sendmail ; startsrc -s sendmail -a "-bd -q30m"; ps -ef | grep -v grep | grep sendmail } #------------------------------------------------ nfs_umount () { echo "###### NFS umount" oslevel -s umount $localmpt } ############################################# # main main () { date '+%d-%m-%Y %H:%M' if [[ $(oslevel | sed 's/\.//g') != "7200" ]] then echo "BAD AIX level" exit 1 fi if [ $(ls /usr/ios/cli/ioscli > /dev/null 2>&1; echo $?) -eq "0" ] then echo "BAD AIX level VIOS !!!!" exit 1 fi altdisk if [ $? -ne "0" ] then echo "EXIT" exit 1 fi date '+%d-%m-%Y %H:%M' nfs_mount date '+%d-%m-%Y %H:%M' update_aix date '+%d-%m-%Y %H:%M' check_free_space update_rpm date '+%d-%m-%Y %H:%M' nfs_umount restart_services date '+%d-%m-%Y %H:%M' oslevel -s instfix -ci | grep :-: lppchk -v } main > $logname 2>&1
Using no argument, verbose only, with -f for fix (apply)
[root@nimsrv]/root/scripts# cat upgrade_rpm.sh
#!/usr/bin/ksh # set -x ################################################## #@(#) Install and upgrade RPM packages ################################################## # v1.1 02-06-2016 add verbose default ################################################## dir=`dirname $0` if [ -f $dir/.env ] then . $dir/.env else path_script=$dir export sn=`basename $0 | cut -d. -f1` export logpath=/tmp export logname=$logpath/$sn.log fi rpminstalled=$logpath/rpm_installed.txt rpmtoinstall=$logpath/rpm_to_install.txt aixlevel=$(oslevel -s) # 7100-03-05-1524 aixmain=$(echo $aixlevel | cut -c1-2) # 71 tl=$(echo $aixlevel | cut -d'-' -f2 | sed 's/^0//') aixleveltl=$(echo ${aixmain}${tl} | sed 's/\(.\)/\1\./g') localmpt=/mnt nimserver=nimsrv # Server containing RPM and export NFS nimrpm=/export/softs # location on NFS mount point Ex: /export/softs/rpm/aix71 mount -o soft $nimserver:$nimrpm $localmpt #------------------------------------------------ usage() { echo "Usage: (" "|-f)" echo "\tInstall BASE RPM package, and check if upgrades are needed" echo "\t-f: fix apply RPM (default no)" } #------------------------------------------------ install_gettext () { # Uninstall wrong package gettext, bad version if [ $(grep '^gettext-0.17' $rpminstalled > /dev/null; echo $?) -eq 0 ] then if [ $(grep '^gettext-0.10' $rpminstalled > /dev/null; echo $?) -ne 0 ] then echo "********** Reinstall bad package: gettext-0.17" cd $rpmpath pkg=$(ls -rt gettext-[0-9]* | tail -1) if [ $fix = "yes" ] then rpm --force -ihv $pkg fi cd fi fi } #------------------------------------------------ uninstall_gettext () { # Uninstall wrong package gettext, bad version rpm -qa | sort -u > $rpminstalled if [ $(grep '^gettext-0.17' $rpminstalled > /dev/null; echo $?) -eq 0 ] then echo "********** Remove : gettext-0.17" rpm -e $(grep '^gettext-0.17' $rpminstalled) if [ $? -eq 0 ] then cd $rpmpath pkg=$(ls -rt gettext-[0-9]* | tail -1) if [ $fix = "yes" ] then rpm --force -ihv $pkg fi cd else echo "Unable to uninstall gettext-0.17 package, please do it manually" fi fi } #------------------------------------------------ upgrade_installed_rpm () { # Upgrade all installed packages cd $rpmpath count=0 echo "********** Upgrade all installed packages" while [[ "$count" -lt 3 ]] do cat /dev/null > $rpmtoinstall for i in $(cat $rpminstalled | grep -v '^AIX-rpm' | egrep -v 'gettext|cdrecord|mkisofs') do rpmbase=$(echo $i | rev | cut -d'-' -f3- | rev) ls -1 ${rpmbase}-[0-9]* | grep -v src > /dev/null 2>&1 if [ $? -eq 0 ] then pkg=$(ls -rt ${rpmbase}-[0-9]* | grep -v src | tail -1) if [ $(echo $pkg | grep $i > /dev/null;echo $? ) -ne 0 ] then if [ $(echo $pkg | grep $i > /dev/null;echo $?) -ne 0 ] then echo "rpm -Uhv $pkg" >> $rpmtoinstall echo "rpm -Uhv $pkg" fi fi fi done if [ $(cat $rpmtoinstall | wc -l | awk '{print $1}') = "0" ] then echo "Upgrade FINISH" break fi chmod a+x $rpmtoinstall if [ $fix = "yes" ] then $rpmtoinstall else break fi rpm -qa | sort -u | sed 's/\.ppc//g' | sed 's/\.noarch//g' > $rpminstalled let count="($count +1)" echo "count $count" done cd } #------------------------------------------------ upgrade_rpmdb () { # Check RPM database version: package AIX-rpm should be the same as AIX version if [ $(grep "^AIX-rpm-${aixleveltl}*" $rpminstalled > /dev/null;echo $?) -ne 0 ] then echo "********** Upgrading RPM database ... be patient ... can take 2 minutes ..." /usr/sbin/updtvpkg fi } #------------------------------------------------ install_base_rpm () { # Upgrade all installed packages cd $rpmpath count=0 echo "********** Install base packages" while [[ "$count" -lt 3 ]] do rpm -qa | sort -u > $rpminstalled cat /dev/null > $rpmtoinstall for rpmbase in bash libiconv libgcc libstdc++ gettext bzip2 unzip zip tree pstree info gmp coreutils logrotate less sed popt tar zlib openssl openldap sudo rsync do ls -1 ${rpmbase}-[0-9]* | grep -v src > /dev/null 2>&1 if [ $? -eq 0 ] then pkg=$(ls -rt ${rpmbase}-[0-9]* | grep -v src | tail -1) pkgi=$(grep "^${rpmbase}-[0-9]" $rpminstalled) if [ $(echo $pkg | grep $pkgi > /dev/null;echo $? ) -ne 0 ] then echo "rpm -Uhv $pkg" >> $rpmtoinstall echo "rpm -Uhv $pkg" fi fi done if [ $(cat $rpmtoinstall | wc -l | awk '{print $1}') = "0" ] then echo "Install FINISH" break fi chmod a+x $rpmtoinstall if [ $fix = "yes" ] then $rpmtoinstall else break fi echo "count $count" let count="($count +1)" done cd } #------------------------------------------------ check_specific () { # Check for new AIX version packages cd $rpmpath echo "********** Checking specific RPM package depending on AIX version" cat /dev/null > $logpath/to_reinstall.txt cat /dev/null > $logpath/pkg_to_reinstall.txt aix_level=$(oslevel | cut -c1-3) aix_level1=$(oslevel) for i in $(ls *aix${aix_level}* | cut -d'-' -f1 | sort -u) do rpm -qa | grep "^$i" >> $logpath/to_reinstall.txt done for pkg in $(cat $logpath/to_reinstall.txt) do if [ $(rpm -ql $pkg | grep "aix${aix_level1}" > /dev/null 2>&1; echo $?) -ne 0 ] then echo $pkg >> $logpath/pkg_to_reinstall.txt #if [ $(echo $pkg | grep lsof > /dev/null 2>&1; echo $?) -ne 0 ] #then # echo $pkg >> $logpath/pkg_to_reinstall.txt #else # if [ $(/usr/linux/sbin/lsof -v | grep "aix${aixmain}" > /dev/null 2>&1; echo $?) -ne 0 ] # then # echo $pkg >> $logpath/pkg_to_reinstall.txt # fi #fi fi done if [ -s $logpath/pkg_to_reinstall.txt ] then echo "**** Package on bad version please reinstall" if [ $fix = "yes" ] then cd $rpmpath for pkg in $(grep libstdc $logpath/pkg_to_reinstall.txt; grep -v "libstdc" $logpath/pkg_to_reinstall.txt) do pkg1=$(ls -rt ${pkg}.* | grep -v src | tail -1) rpm --force -ihv $pkg1 done else echo "**** Using command: rpm --force -ihv <xxxaix${aix_level}xxx>" cat $logpath/pkg_to_reinstall.txt fi else echo "OK compliant" fi } ############################################# # main ############################################# cd $path_script # Read and check scripts arguments debug=yes fix=no while [ $# -gt 0 ] do case "$1" in -f) fix=yes ;; -h|help) usage exit 1;; esac shift done rpmpath=$localmpt/rpm/aix${aixmain} rpm -qa | sort -u | sed 's/\.ppc//g' | sed 's/\.noarch//g' > $rpminstalled install_gettext upgrade_rpmdb check_specific upgrade_installed_rpm 2> /dev/null install_base_rpm 2> /dev/null uninstall_gettext umount $localmpt echo "Finish"