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}