Code Diary – Code that I wrote today

Heute habe ich ein Shell-Skript für folgende Punkte implementiert:

  • Erstellen eines oder mehrerer Server-Profile
  • Löschen eines oder mehrerer Server-Profile
  • Installieren von Enterprise-Anwendungen

Das Skript wird auf unserer iSeries ausgeführt und ist für die Verwaltung der IBM WebSphere Application Server-Profile zuständig. Ich habe im Information Center der iSeries zufällig das getopts-Kommando entdeckt, allerdings glaube ich nicht, dass es das Verwalten von Optionen in diesem Fall erheblich erleichtern würde.

manageProfile.sh

# Main Program
if [ $# -eq 0 ]
then
  echo "usage: [[[-create | -delete] <profile_1> ...] | [-install <profile>]]"
  exit 1
fi

case "$1" in
   -[i]|-install) installApplications $* ;;
   -[c]|-create) createProfile $* ;;
   -[d]|-delete) deleteProfile $* ;;
   *) echo "usage: [[[-create | -delete] <profile_1> ...] | [-install <profile>]]"
esac

Ich bin keine Profi was das Erstellen von Shell-Skripten angeht, jedoch erscheint mir diese Lösung ganz brauchbar.

manageProfile : installApplications

installApplications() {
  if [ $# -ne 2 ] 
  then
    echo "usage: $0 -install <profile>"
    exit 1
  fi
  for arg
  do 
    if [ "$arg" == "$1" ]
    then
      continue
    fi
    installPropertyFile $arg
    replacePropertiesInPropertyLoader
    executeInstallationProcess
  done
}

manageProfile : installApplications : installPropertyFile

installPropertyFile() {
  if [ -f $arg.properties ]
  then
    . $arg.properties
  else
    echo " Error: Please be sure that $arg.properties exist."
    exit 1
  fi
}

manageProfile : installApplications : replacePropertiesInPropertyLoader

replacePropertiesInPropertyLoader() {
  cat ./wsadmin/PropertyLoaderClass.py | \
  sed -e "s%TODO%$(pwd)%" -e "s%PROFILE%$arg%" \
  > ./wsadmin/PropertyLoaderClass.py
}

manageProfile : installApplications : executeInstallationProcess

executeInstallationProcess() {
  echo "Install Applications ..."
  ./$arg/bin/wsadmin -username $adminUserName -password $adminPassword \
  -lang jython -f /QIBM/UserData/WebSphere/AppServer/V7/Express/profiles/wsadmin/installEARs.py
}

manageProfile : createProfile

createProfile() {
  if [ $# -lt 2 ]
  then
    echo "usage $0 -create <profile_1> ..."
    exit 1
  fi
  for arg
  do
    if [ "$arg" == "$1" ]
    then
      continue
    fi
    installPropertyFile $arg      
    replacePropertiesInPropertyLoader
    executeProfileCreation $arg
    startServer $arg
    configureServer $arg
    stopServer $arg
  done
}

manageProfile : createProfile : executeProfileCreation

executeProfileCreation() {
  echo "Create profile: $arg ..."  
  /QIBM/ProdData/WebSphere/AppServer/V7/Express/bin/manageprofiles \
  -create \
  -profileName $arg \
  -profilePath /QIBM/UserData/WebSphere/AppServer/V7/Express/profiles/$arg \
  -hostName gamma.cpbs.at \
  -nodeName gamma_$arg \
  -enableAdminSecurity true \
  -startingPort $startingPort \
  -adminUserName $adminUserName \
  -adminPassword $adminPassword  
  echo "Successfully created profile!"
}

manageProfile : createProfile : startServer/configureServer/stopServer

startServer() {
  echo "Starting server of $arg-profile ..."
  ./$arg/bin/startServer
}

configureServer() {
  echo "Configure server of $arg-profile ..."
  ./$arg/bin/wsadmin -username $adminUserName -password $adminPassword -lang jython \
  -f /QIBM/UserData/WebSphere/AppServer/V7/Express/profiles/wsadmin/configSetup.py
}

stopServer() {
  echo "Stopping server of $arg-profile ..."
  ./$arg/bin/stopServer -username $adminUserName -password $adminPassword
}

manageProfile : deleteProfile

deleteProfile() {
  if [ $# -lt 2 ]
  then
    echo "usage $0 -delete <profile_1> ..."
    exit 1
  fi
  
  for arg
  do 
    if [ "$arg" == "$1" ]
    then
      continue
    fi
    executeProfileDeletion $arg
  done
}

manageProfile : deleteProfile : executeProfileDeletion

executeProfileDeletion() {
  echo "Delete Profile $arg ..."
  /QIBM/ProdData/WebSphere/AppServer/V7/Express/bin/manageprofiles -delete -profileName $arg
}

Ich werde den Code nicht näher erläutern. Ich möchte mit diesem Blogeintrag eine Code-Diary beginnen indem ich an jedem Tag an dem ich Code schreibe ein bisschen davon poste. Falls jemand Verbesserungsvorschläge hat, würde ich mich sehr über einige Kommentare freuen.

Über sageniuz

https://about.me/ClausPolanka
Dieser Beitrag wurde unter Programming veröffentlicht. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s