Patch Skript für SAP Webdispatcher auf Linux Systemen

Passend zum Start Skript hier noch ein Skript, mit dem man den Kernel von SAP Webdispatchern auf Linux automatierst patchen kann.

 

Bitte das Skript vor dem Einsatz auf richtige Pfade prüfen und z.B. mit "bash -n skript.sh" die Syntax überprüfen.

 

Das Skript läuft in zwei Varianten.

 

Wenn man "ALL" als Parameter angibt, werden alle Instanzen die in /sapmnt gefunden werden gepatcht. (Achtung! Es dürfen sich keine Verzeichnisse darin befinden, die da nicht hingehören bzw. dürfen sie nicht mit WD beginnen.)
Wenn man die SAP SID angibt, wird nur die angegebene Instanz gepatcht.
Das Skript kopiert auch den alten Kernel vorher weg.

 #!/bin/bash # Run as root  IAM=$(whoami) if [[ $IAM == root ]]; then echo else echo Please run as root exit 0 fi  # Check Parameter show Usage if [ -z $1 ]; then echo Usage: echo "install-patch.sh ALL  ->  patch all webdispatcher" echo "install-patch.sh SID  ->  patch specific webdispatcher" echo echo Available Instances: $(ls /sapmnt) exit 0 fi  # Define SAPWEBDISP* patchfile WPATCH=$(ls -r1v /path/to/SAPWEBDISP* | tail -1)  #Check Parameter for what to patch if [ $1 == "ALL" ]; then        # Backup of old Kernel 		OLDKERNSID=$(ls -1 /sapmnt | head -1)        cp -rp /sapmnt/$OLDKERNSID/exe /backup/wdispkernold/exe         # Patch All Webdispatcher Instances        if [ -f $WPATCH ]; then        for a in $(ls -1 /sapmnt); do              for P in $(ps -ef |grep $a |grep adm |awk '{print $2}'); do 					kill -9 $P              done              cd /sapmnt/$a/exe/uc/linuxx86_64              /path/to/SAPCAR -xvf $WPATCH              chown -R ${a,,}adm:sapsys *              # Start Instance 			 PROF=$(ls -1 /sapmnt/$a/profile/$a* |head -1)              IPCNR=$(grep "SAPSYSTEM =" $PROF | awk '{print $3}')              su - ${a,,}adm -c "sapcontrol -nr $IPCNR -function StartService $a"              sleep 2              su - ${a,,}adm -c "sapcontrol -nr $IPCNR -function StartSystem"              #/bin/bash SAPSTART.sh $a              done        else 	      echo "No SAPWEBDISPATCHER Patchfile found!" 	      exit 1        fi else        # Patch single instance 	if [ ! -f $WPATCH ]; then 	    echo "No SAPWEBDISPATCHER Patchfile found!" 		exit 1 	elif [ -d /sapmnt/$1 ]; then              echo Match found for $1               # kill webdispatcher instance              for x in $(ps -ef |grep $1 |grep adm |awk '{print $2}'); do              kill -9 $x              done              sleep 2               # Backup Old Kernel              cp -rp /sapmnt/$1/exe /backup/wdispkernold/$1/exe               # Start patching single instance              WPATCH=$(ls -1v /path/to/SAPWEBDISP* | tail -1)              cd /sapmnt/$1/exe/uc/linuxx86_64              /saprpm/SAPCAR -xvf $WPATCH              chown -R ${1,,}adm:sapsys *              # Start Instance              PROF=$(ls -1 /sapmnt/$1/profile/$1* |head -1)              IPCNR=$(grep "SAPSYSTEM =" $PROF | awk '{print $3}')              su - ${1,,}adm -c "sapcontrol -nr $IPCNR -function StartService $1"              sleep 2              su - ${1,,}adm -c "sapcontrol -nr $IPCNR -function StartSystem"              #/bin/bash SAPSTART.sh $1        else        echo        echo $1 does not exist!        echo Available Instances: $(ls /sapmnt)        exit 1        fi fi

Am Besten vorher auf einem Test- oder Sandbox-System testen!

{jcomments on}

Kommentar verfassen

Christian Hummel