Auf den saprouter selbst möchte ich hier gar nicht weiter eingehen. Seine Funktionen etc. sind unter help.sap.com ganz gut beschrieben. Da ich ein Freund von Automatisierung und möglichst einfachen Administrationslösungen bin habe ich mich dazu entschlossen den saprouter nicht etwa als Unixdaemon laufen zu lassen oder irgendwie per Script zu starten, sondern das Framework der SAP mit SAP Kernel dafür zu nutzen.
Die Vorteile dieser Lösung liegen für mich in dem Einheitlichen Starten und Stoppen des Systems und sogar der Möglichkeit der Prozessüberwachung per sapcontrol. Wenn jemand ein reguläres SAP System per startsap oder stopsap stoppen kann, so kann er auch den saprouter in dieser Lösung mit genau dem gleichen Vorgehen starten und stoppen. Die Anmeldung als <sid>adm ist analog zu einem SAP System. Der Rest ist ebenfalls analog zu betrachten.
Was benötigt man für die Umsetzung? Etwa 3-4 GB Plattenplatz, das SAP Standard Filesystem Layout mit /sapmnt sowie /usr/sap, einen <sid>adm mit Gruppe sapsys und als Software ein zur Hardware passendes SAP Kernel Exe Patch SAR Archive (SAPEXE_*.SAR) als Unicode Ausführung. Es reicht aus den Plattenplatz komplett unter /sapmnt/ zur Verfügung zu stellen wenn man keine zwei Filesysteme (zusätzliches /usr/sap/) einrichten möchte kann man hier auch mit Links arbeiten.
Unser Beispiel System nennen wir hier mal SR1 – passend für Saprouter 1. Es bekommt eine Instanz Namens W97. Der <sid>adm User heißt entsprechend sr1adm ebenso die Filesysteme. Der User wird entsprechend mit dem Home-Verzeichnis /home/sr1adm angelegt, bekommt die Gruppe sapsys als primäre Gruppe sowie die csh-Shell.
Das könnte dann zum Beispiel so aussehen:
sapserver:sr1adm 2> grep -i sr1adm /etc/passwd /etc/group /etc/passwd:sr1adm:!:10001:15000:SAP System Administrator:/home/sr1adm:/usr/bin/csh /etc/group:sapsys:!:15000:sr1adm
Im Homeverzeichnis brauchen wir lediglich die Standard Environment Dateien:
sapserver:sr1adm 3> ls -altr -rw-r----- 1 sr1adm sapsys 1315 Feb 25 2013 .sapsrc.sh -rw-r----- 1 sr1adm sapsys 1548 Feb 25 2013 .sapsrc.csh -rw-r----- 1 sr1adm sapsys 1801 Feb 25 2013 .cshrc -rw-r----- 1 sr1adm sapsys 1660 Feb 27 2013 .profile -rw-r----- 1 sr1adm sapsys 11141 Feb 27 2013 .sapenv.csh -rw-r----- 1 sr1adm sapsys 10103 Feb 27 2013 .sapenv.sh -rwxr--r-- 1 sr1adm sapsys 2052 Feb 27 2013 .login sapserver:sr1adm 4>
In der sapenv.csh/sh habe ich folgende Änderungen hinzugefügt (beispielhaft wird hier die .csh als Auszug angezeigt):
setenv SAPSYSTEMNAME SR1 set _UC_NUC=uc set _DEF_EXE1=/usr/sap/"$SAPSYSTEMNAME"/SYS/exe/"$_UC_NUC"/"$_PLATFORM" set _DEF_EXE2=/usr/sap/"$SAPSYSTEMNAME"/SYS/exe/run set _DEF_EXE="$_DEF_EXE1 $_DEF_EXE2" setenv DIR_LIBRARY ${_DEF_EXE2} setenv RSEC_SSFS_DATAPATH /usr/sap/"$SAPSYSTEMNAME"/SYS/global/security/rsecssfs/data setenv RSEC_SSFS_KEYPATH /usr/sap/"$SAPSYSTEMNAME"/SYS/global/security/rsecssfs/key setenv SNC_LIB /usr/sap/"$SAPSYSTEMNAME"/W97/exe/libsapcrypto.so setenv SECUDIR /usr/sap/"$SAPSYSTEMNAME"/W97/sec [...] # define some nice aliases alias pd pushd alias pop popd alias dir 'ls -l' alias l 'ls -abxCF' alias h 'history' alias Pwd '/bin/pwd' alias Su "rlogin `hostname` -l" alias cdexe 'cd $_DEF_EXE2' alias cdpro 'cd /usr/sap/$SAPSYSTEMNAME/SYS/profile' alias cdglo 'cd /usr/sap/$SAPSYSTEMNAME/SYS/global' alias cdput 'cd /usr/sap/$SAPSYSTEMNAME/put' alias cdW 'cd /usr/sap/$SAPSYSTEMNAME/W97' alias cdwork 'cd /usr/sap/$SAPSYSTEMNAME/W97/work' ls -d /usr/sap/$SAPSYSTEMNAME/[D,G,S,J,T,A]*[0-9][0-9] >& /dev/null if ( $status == 0 ) then set INSTANCEDIR_LIST=`ls -d /usr/sap/$SAPSYSTEMNAME/[D,G,S,J,T,A,W]*[0-9][0-9]` set INSTANCEDIR_CI="/usr/sap/$SAPSYSTEMNAME/DVEBM" set INSTANCEDIR_DI="/usr/sap/$SAPSYSTEMNAME/D" set INSTANCEDIR_GW="/usr/sap/$SAPSYSTEMNAME/G" set INSTANCEDIR_S="/usr/sap/$SAPSYSTEMNAME/SCS" set INSTANCEDIR_JC="/usr/sap/$SAPSYSTEMNAME/JC" set INSTANCEDIR_J="/usr/sap/$SAPSYSTEMNAME/J" set INSTANCEDIR_T="/usr/sap/$SAPSYSTEMNAME/TRX" set INSTANCEDIR_AS="/usr/sap/$SAPSYSTEMNAME/ASCS" set INSTANCEDIR_W="/usr/sap/$SAPSYSTEMNAME/W" foreach d ( $INSTANCEDIR_LIST ) echo $d | grep `echo $INSTANCEDIR_CI` > /dev/null set rc1 = $status echo $d | grep `echo $INSTANCEDIR_DI` > /dev/null set rc2 = $status echo $d | grep `echo $INSTANCEDIR_GW` > /dev/null set rc3 = $status echo $d | grep `echo $INSTANCEDIR_S` > /dev/null set rc4 = $status echo $d | grep `echo $INSTANCEDIR_JC` > /dev/null set rc5 = $status echo $d | grep `echo $INSTANCEDIR_J` > /dev/null set rc6 = $status echo $d | grep `echo $INSTANCEDIR_T` > /dev/null set rc7 = $status echo $d | grep `echo $INSTANCEDIR_AS` > /dev/null set rc8 = $status echo $d | grep `echo $INSTANCEDIR_W` > /dev/null set rc9 = $status if ( $rc1 == 0 ) then alias cdD 'cd /usr/sap/$SAPSYSTEMNAME/DVEBM*[0-9][0-9]' else if ( $rc2 == 0 ) then alias cdDi 'cd /usr/sap/$SAPSYSTEMNAME/D[0-9][0-9]' else if ( $rc3 == 0) then alias cdG 'cd /usr/sap/$SAPSYSTEMNAME/G[0-9][0-9]' else if ( $rc4 == 0) then alias cdS 'cd /usr/sap/$SAPSYSTEMNAME/SCS[0-9][0-9]' else if ( $rc5 == 0) then alias cdJC 'cd /usr/sap/$SAPSYSTEMNAME/JC[0-9][0-9]' else if ( $rc6 == 0) then alias cdJ 'cd /usr/sap/$SAPSYSTEMNAME/J[0-9][0-9]' else if ( $rc7 == 0) then alias cdT 'cd /usr/sap/$SAPSYSTEMNAME/TRX[0-9][0-9]' else if ( $rc8 == 0) then alias cdAS 'cd /usr/sap/$SAPSYSTEMNAME/ASCS[0-9][0-9]' else if ( $rc9 == 0) then alias cdW 'cd /usr/sap/$SAPSYSTEMNAME/W[0-9][0-9]' endif end endif
Unter /sapmnt muss dann das neue Filesystem SR1 eingerichtet werden.
Das System bekommt ganz regulär SYS, exe, global und profile.
sapserver:sr1adm 32> ls -altr total 16 drwxr-xr-x 2 sr1adm sapsys 256 Jun 22 2013 lost+found drwxr-xr-x 12 root sapsys 4096 Jun 22 2013 .. drwxr-xr-x 4 sr1adm sapsys 256 Jun 25 2013 exe drwxr-xr-x 4 sr1adm sapsys 256 Jun 25 2013 global drwxr-xr-x 5 sr1adm sapsys 256 Jun 25 2013 SYS drwxr-xr-x 8 sr1adm sapsys 4096 Jun 25 2013 . drwxr-xr-x 3 sr1adm sapsys 256 Jun 25 2013 profile
Im exe Ordner wird dann entsprechend der Architektur der Unterordner uc und der Architekturordner angelegt und der SAP Kernel Exe Patch (SAR Package) entpackt:
/sapmnt/SR1/exe/uc/linuxx86_64
Außerdem kommt noch das saprouter Binary in das Exe Verzeichnis. Am Ende wie gewohnt saproot.sh als root ausführen unter Angabe der SID.
Im SYS Ordner werden dann die folgenden Ordner bzw. Links angelegt:
sapserver:sr1adm 58> ls -altr total 8 drwxr-xr-x 2 sr1adm sapsys 256 Feb 25 2013 src drwxr-xr-x 3 sr1adm sapsys 256 Feb 25 2013 gen drwxr-xr-x 3 sr1adm sapsys 256 Feb 25 2013 exe lrwxrwxrwx 1 sr1adm sapsys 19 Feb 25 2013 profile -> /sapmnt/SR1/profile lrwxrwxrwx 1 sr1adm sapsys 18 Feb 25 2013 global -> /sapmnt/SR1/global drwxr-xr-x 5 sr1adm sapsys 256 Feb 25 2013 . drwxr-xr-x 8 sr1adm sapsys 4096 Feb 25 2013 ..
Die Inhalte der Unterordner sehen dann wie folgt aus:
sapserver:sr1adm 61> find . -exec ls -altr {} \; total 8 drwxr-xr-x 2 sr1adm sapsys 256 Feb 25 2013 src drwxr-xr-x 3 sr1adm sapsys 256 Feb 25 2013 gen drwxr-xr-x 3 sr1adm sapsys 256 Feb 25 2013 exe lrwxrwxrwx 1 sr1adm sapsys 19 Feb 25 2013 profile -> /sapmnt/SR1/profile lrwxrwxrwx 1 sr1adm sapsys 18 Feb 25 2013 global -> /sapmnt/SR1/global drwxr-xr-x 5 sr1adm sapsys 256 Feb 25 2013 . drwxr-xr-x 8 sr1adm sapsys 4096 Feb 25 2013 .. total 0 drwxr-xr-x 2 sr1adm sapsys 256 Feb 25 2013 opt drwxr-xr-x 3 sr1adm sapsys 256 Feb 25 2013 . lrwxrwxrwx 1 sr1adm sapsys 18 Feb 25 2013 uc -> /sapmnt/SR1/exe/uc lrwxrwxrwx 1 sr1adm sapsys 3 Feb 25 2013 run -> dbg lrwxrwxrwx 1 sr1adm sapsys 19 Feb 25 2013 nuc -> /sapmnt/SR1/exe/nuc lrwxrwxrwx 1 sr1adm sapsys 12 Feb 25 2013 dbg -> uc/linuxx86_64 drwxr-xr-x 5 sr1adm sapsys 256 Feb 25 2013 .. lrwxrwxrwx 1 sr1adm sapsys 12 Feb 25 2013 ./exe/dbg -> uc/linuxx86_64 lrwxrwxrwx 1 sr1adm sapsys 19 Feb 25 2013 ./exe/nuc -> /sapmnt/SR1/exe/nuc total 0 drwxr-xr-x 2 sr1adm sapsys 256 Feb 25 2013 . drwxr-xr-x 3 sr1adm sapsys 256 Feb 25 2013 .. lrwxrwxrwx 1 sr1adm sapsys 3 Feb 25 2013 ./exe/run -> dbg lrwxrwxrwx 1 sr1adm sapsys 18 Feb 25 2013 ./exe/uc -> /sapmnt/SR1/exe/uc total 0 drwxr-xr-x 2 sr1adm sapsys 256 Feb 25 2013 dbg drwxr-xr-x 3 sr1adm sapsys 256 Feb 25 2013 . drwxr-xr-x 5 sr1adm sapsys 256 Feb 25 2013 .. total 0 drwxr-xr-x 3 sr1adm sapsys 256 Feb 25 2013 .. drwxr-xr-x 2 sr1adm sapsys 256 Feb 25 2013 . lrwxrwxrwx 1 sr1adm sapsys 18 Feb 25 2013 ./global -> /sapmnt/SR1/global lrwxrwxrwx 1 sr1adm sapsys 19 Feb 25 2013 ./profile -> /sapmnt/SR1/profile total 0 drwxr-xr-x 2 sr1adm sapsys 256 Feb 25 2013 . drwxr-xr-x 5 sr1adm sapsys 256 Feb 25 2013 ..
Weiter geht es unterhalb von /usr/sap. Hier wird zunächst (wenn noch nicht angelegt) eine Datei Namens sapservices mit mindestens folgendem Inhalt benötigt und ausführbar sein muss:
#!/bin/sh LIBPATH=/usr/sap/SR1/W97/exe:$LIBPATH; export LIBPATH; /usr/sap/SR1/W97/exe/sapstartsrv pf=/usr/sap/SR1/SYS/profile/SR1_W97_sapserver -D -u sr1adm
Die Datei sollte wie folgt berechtigt sein, so dass nur root diese schreiben, alle anderen sie lesen und ausführen dürfen. Über die Datei wird der sapstartsrv Daemon beim Systemstart automatisch gestartet, so dass der sapcontrol Prozess sich verbinden und den Status abfragen kann (SAP Standard):
-rwxr-xr-x 1 root sapsys 799 Feb 25 2013 sapservices
Unter /usr/sap wird ein neues Filesystem SR1 angelegt und entsprechend berechtigt:
drwxr-xr-x 8 sr1adm sapsys 4096 Jul 25 2016 SR1
Der Inhalt des Filesystems /usr/sap/SR1 sieht dann wie folgt aus:
sapserver:sr1adm 12> ls -altr total 16 drwxr-xr-x 2 root root 256 Feb 22 2013 lost+found drwxr-xr-x 12 root sapsys 4096 Feb 22 2013 .. drwxr-xr-x 7 sr1adm sapsys 256 Feb 25 2013 W97 drwxr-xr-x 5 sr1adm sapsys 256 Feb 25 2013 SYS ldrwxr-xr-x 8 sr1adm sapsys 4096 Feb 25 2013 . sapserver:sr1adm 13>
Unter SYS finden sich folgende Ordner und Links:
sapserver:sr1adm 61> find . -exec ls -altr {} \; total 8 drwxr-xr-x 2 sr1adm sapsys 256 Feb 25 2013 src drwxr-xr-x 3 sr1adm sapsys 256 Feb 25 2013 gen drwxr-xr-x 3 sr1adm sapsys 256 Feb 25 2013 exe lrwxrwxrwx 1 sr1adm sapsys 19 Feb 25 2013 profile -> /sapmnt/SR1/profile lrwxrwxrwx 1 sr1adm sapsys 18 Feb 25 2013 global -> /sapmnt/SR1/global drwxr-xr-x 5 sr1adm sapsys 256 Feb 25 2013 . drwxr-xr-x 8 sr1adm sapsys 4096 Feb 25 2013 .. total 0 drwxr-xr-x 2 sr1adm sapsys 256 Feb 25 2013 opt drwxr-xr-x 3 sr1adm sapsys 256 Feb 25 2013 . lrwxrwxrwx 1 sr1adm sapsys 18 Feb 25 2013 uc -> /sapmnt/SR1/exe/uc lrwxrwxrwx 1 sr1adm sapsys 3 Feb 25 2013 run -> dbg lrwxrwxrwx 1 sr1adm sapsys 19 Feb 25 2013 nuc -> /sapmnt/SR1/exe/nuc lrwxrwxrwx 1 sr1adm sapsys 12 Feb 25 2013 dbg -> uc/linuxx86_64 drwxr-xr-x 5 sr1adm sapsys 256 Feb 25 2013 .. drwxr-xr-x 2 sr1adm sapsys 256 Feb 25 2013 . drwxr-xr-x 3 sr1adm sapsys 256 Feb 25 2013 .. total 0 drwxr-xr-x 2 sr1adm sapsys 256 Feb 25 2013 dbg drwxr-xr-x 3 sr1adm sapsys 256 Feb 25 2013 . drwxr-xr-x 5 sr1adm sapsys 256 Feb 25 2013 ..
Das Instanzverzeichnis W97 sieht so aus:
sapserver:sr1adm 29> ls -altr total 40 drwxr-xr-x 2 sr1adm sapsys 256 Feb 25 2013 sec drwxr-xr-x 2 sr1adm sapsys 256 Feb 25 2013 data drwxr-xr-x 7 sr1adm sapsys 256 Feb 25 2013 . drwxr-xr-x 5 sr1adm sapsys 12288 Feb 25 2013 exe drwxr-xr-x 5 sr1adm sapsys 256 Feb 25 2013 log drwxr-xr-x 8 sr1adm sapsys 4096 Feb 25 2013 .. drwxr-xr-x 2 sr1adm sapsys 4096 Feb 25 2013 work
In das Verzeichnis exe wird beim Start per sapcpe der Kernel aus /sapmnt/SR1/exe/uc/86_64 kopiert – das saprouter Binary muss entweder in eine der sapcpe Steuerdateien mit aufgenommen werden, manuell kopiert oder gelinkt werden. Je nach Vorliebe – die sapcpe Steuerdateien sind natürlich der saubere Weg. Das saprouter Binary wird aus dem /usr/sap/SR1/W97/exe gestartet – man muss entsprechend dafür sorgen, dass es immer das aktuelle Binary ist. Wenn man einfach ein neueres saprouter Binary unterhalb von /sapmnt/SR1/exe… ablegt genügt dies nicht, da das Runtime-Verzeichnis eben ein anderes ist.
Kommen wir nun zur Pflege der Profile unter /sapmnt/SR1/profile. Im Profile Ordner habe ich die Profile des SAP Systems SR1 sowie die saprouttab abgelegt:
sapserver:sr1adm 9> ls -altr total 40 -rw-r--r-- 1 sr1adm sapsys 1339 Feb 25 2013 DEFAULT.PFL drwxr-xr-x 8 sr1adm sapsys 4096 Feb 25 2013 .. -rw-r--r-- 1 sr1adm sapsys 3185 Feb 25 2013 sr1_W97_sapserver drwxr-xr-x 3 sr1adm sapsys 256 Feb 25 2013 . -rw-r--r-- 1 sr1adm sapsys 6382 Feb 25 2013 saprouttab sapserver:sr1adm 10>
Das DEFAULT.PFL sieht so aus:
#.******************************************************************************************************************************
#.* *
#.* Defaultprofil DEFAULT *
#.* *
#.* Version = 000001 *
#.* Generiert von Benutzer = Admin *
#.* Datum der Generierung = 25.02.2013 , 18:04:42 *
#.* *
#.******************************************************************************************************************************
rslg/unix_syslog/active = 0
SAPSYSTEMNAME = SR1
SAPGLOBALHOST = sapserver
SAPFQDN = sapdomain
SAPLOCALHOST = sapserver
SAPLOCALHOSTFULL = $(SAPLOCALHOST).$(SAPFQDN)
Das Instanzprofil für die Instanz W97, innerhalb der die saprouter-Instanz läuft sieht so aus:
#.****************************************************************************************************************************** #.* * #.* Instanzprofil SR1_W97_saprouter * #.* * #.* Version = 000001 * #.* Generiert von Benutzer = Admin * #.* Datum der Generierung = 25.02.2013 , 18:04:42 * #.* * #.****************************************************************************************************************************** rslg/unix_syslog/active = 0 # host information virtuell ip SAPGLOBALHOST = sapserver SAPFQDN = sapdomain SAPLOCALHOST = sapserver SAPLOCALHOSTFULL = $(SAPLOCALHOST).$(SAPFQDN) # unique instance identifier INSTANCE_NAME = W97 SAPSYSTEMNAME = SR1 # unique instance number SAPSYSTEM = 97 DIR_INSTANCE = $(DIR_SEP)usr$(DIR_SEP)sap$(DIR_SEP)SP2$(DIR_SEP)W97 DIR_CT_RUN = $(DIR_EXE_ROOT)$(DIR_SEP)$(OS_UNICODE)$(DIR_SEP)linux86_64 DIR_EXECUTABLE = $(DIR_INSTANCE)$(DIR_SEP)exe DIR_WORK = $(DIR_INSTANCE)$(DIR_SEP)work DIR_PROFILE = $(DIR_INSTALL)$(DIR_SEP)profile _PF = $(DIR_PROFILE)$(DIR_SEP)SR1_W97_sapserver DIR_LIBRARY = $(DIR_INSTANCE)$(DIR_SEP)exe SETENV_00 = DIR_LIBRARY=$(DIR_LIBRARY) SETENV_01 = LD_LIBRARY_PATH=$(DIR_LIBRARY):%(LD_LIBRARY_PATH) SETENV_02 = SHLIB_PATH=$(DIR_LIBRARY):%(SHLIB_PATH) SETENV_03 = LIBPATH=$(DIR_LIBRARY):%(LIBPATH) SETENV_04 = PATH=$(DIR_EXECUTABLE):%(PATH) SETENV_05 = SNC_LIB=$(DIR_LIBRARY)$(DIR_SEP)libsapcrypto.so SETENV_06 = SECUDIR=$(DIR_INSTANCE)$(DIR_SEP)sec #----------------------------------------------------------------------- # saprouter options #----------------------------------------------------------------------- LOGFILE=$(DIR_WORK)$(DIR_SEP)dev_saprouter TRACEFILE=$(DIR_WORK)$(DIR_SEP)saprouter.trc SAPROUTTAB=$(DIR_PROFILE)$(DIR_SEP)saprouttab TRACELEVEL=1 SAPROUTERHOSTNAME=$(SAPLOCALHOSTFULL) SAPROUTERPORT=3299 MAXNUMCLIENTS=2048 LOGFILESIZE=16777216 OUTGOING_IP=192.168.0.1 TIMEOUTWAIT=30000 #----------------------------------------------------------------------- # Start saprouter #----------------------------------------------------------------------- _SR = sr.sap$(SAPSYSTEMNAME)_$(INSTANCE_NAME) Execute_00 = local rm -f $(_SR) Execute_01 = local ln -s -f $(DIR_EXECUTABLE)$(DIR_SEP)saprouter$(FT_EXE) $(_SR) Start_Program_00 = local $(_SR) -r -G $(LOGFILE) -J $(LOGFILESIZE) -C $(MAXNUMCLIENTS) -W $(TIMEOUTWAIT) -E -T $(TRACEFILE) -R $(SAPROUTTAB) -V $(TRACELEVEL) -H $(SAPROUTERHOSTNAME) -S $(SAPROUTERPORT) -I $(OUTGOING_IP)
Die saprouttab sieht entsprechend so aus:
# saprouttab # Beispiel: # erlaubt von nach Service Passwort # # P 147.204.2.5 1.1.1.1 3200 # # # Erlaubt alles - zum Testen # #P * * * # #Uebesericht SAPSERVs #sapserv1 (194.117.106.129) connection via Internet VPN #sapserv2 (194.39.131.34) connection via Internet SNC #sapserv3 (147.204.2.5) for customers with connection to Germany #sapserv4 (204.79.199.2) for customers in America #sapserv5 (194.39.138.2) for customers with connection to Japan #xsapserv6 (194.39.139.16) for customers in Australia and New Zealand #sapserv7 (194.39.134.35) for customers in Asia #
Das System wird ganz regulär per startsap / stopsap gestartet oder beendet. Die Logfiles des saprouters werden im Workverzeichnis abgelegt. Die saprouttab wird im Ordner /sapmnt/SR1/profile erwartet. Verantwortlich dafür sind die folgenden Parameter im Instanzprofil:
LOGFILE=$(DIR_WORK)$(DIR_SEP)dev_saprouter TRACEFILE=$(DIR_WORK)$(DIR_SEP)saprouter.trc SAPROUTTAB=$(DIR_PROFILE)$(DIR_SEP)saprouttab
Wenn das System erfolgreich gestartet wurde kann man eine entsprechende Abfrage per sapcontrol vornehmen:
sapserver:sr1adm 1> sapcontrol -nr 97 -function GetProcessList 25.02.2013 22:23:00 GetProcessList OK name, description, dispstatus, textstatus, starttime, elapsedtime, pid saprouter, , GREEN, Running, 2013 02 25 08:53:19, 2743:29:41, 15663332 sapserver:sr1adm 2>
Ein Blick auf die Prozesse offenbart folgendes:
sr1adm 6553802 1 0 Oct 18 - 0:00 sapstart pf=/usr/sap/SR1/SYS/profile/SR1_W97_sapserver sr1adm 15663332 6553802 0 Oct 18 - 0:22 sr.sapsr1_W97 -r -G /usr/sap/SR1/W97/work/dev_saprouter -J 16777216 -C 2048 -W 30000 -E -T /usr/sap/SR1/W97/work/saprouter.trc -R /usr/sap/SR1/SYS/profile/saprouttab -V 1 -H sapserver.sapdomain -S 3299 -I 192.168.0.1
Das SAP System SR1 besteht also aus einem sapstartsrv Prozess für die sapcontrol Kommunikation/Steuerung sowie dem saprouter, der hier saplike gelinkt sr.sapsr1_W97 heißt. Das Format sieht ähnlich aus wie bei den Workprozessen und dürfte bekannt sein.
Um einige Sonderfunktionen des saprouters komfortabel nutzen zu können wurde noch zusätzlich ein Script erstellt um verschiedene Funktionen bereit zu stellen. Über das Script lässt sich die saprouttab neu einlesen ohne die Instanz neu starten zu müssen, es können die aktuell über den saprouter laufenden Verbindungen angezeigt werden und der Prozess (per stopsap/startsap) neu gestartet werden. Das Script liegt bei dieser Installation im Homeverzeichnis des <sid>adm Benutzers und sie wie folgt aus:
-rwxrwxr-x 4 sr1adm sapsys 529 Feb 25 2013 StopSaprouter lrwxrwxrwx 1 sr1adm sapsys 30 Feb 25 2013 StartSaprouter -> /home/sr1adm/StopSaprouter lrwxrwxrwx 1 sr1adm sapsys 30 Feb 25 2013 ShowConnections -> /home/sr1adm/StopSaprouter lrwxrwxrwx 1 sr1adm sapsys 30 Feb 25 2013 ReloadSaprouttab -> /home/sr1adm/StopSaprouter
Das Script erkennt anhand des Namens mit dem es aufgerufen wurde die gewünschte Funktion, so kann man die Übergabe von Parametern obsolet machen:
#!/bin/bash #Erweiterte saprouter Steuerung MYNAME=$(basename $0) DIRNAME=$(dirname $0) if [ $(whoami) != "sr1adm" ] then echo "Bitte das Script $MYNAME als Benutzer sr1adm aufrufen!" exit 8 fi case $MYNAME in StartSaprouter) cd $HOME startsap ;; StopSaprouter) stopsap ;; ReloadSaprouttab) /usr/sap/SR1/W97/work/sr.sapSR1_W97 -n -H sapserver -S 3299 -I 192.168.0.1 ;; ShowConnections) usr/sap/SR1/W97/work/sr.sapSR1_W97 -l -H sapserver-S 3299 -I 192.168.0.1 ;; *) ;; esac