Start und Stop Skript

Das aktuelle Skript zum starten und stoppen von Weblogic Umgebungen

# ============================================================
#
# Script: startAll.py
#
# Author: Jan-Peter Timmermann, http://timmis.me
#
# Purpose: Start and Stop Script for Domain or Components of Domain
#
# ============================================================
import os, sys, socket;
from datetime import datetime
from java.io import File
from java.io import FileOutputStream
from java.io import FileInputStream

class color:
PURPLE = '\033[95m'
CYAN = '\033[96m'
DARKCYAN = '\033[36m'
BLUE = '\033[94m'
GREEN = '\033[92m'
YELLOW = '\033[93m'
RED = '\033[91m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
END = '\033[0m'
def printbold(txt):
print(color.BOLD + printHeader(txt) + color.END)
def printline(ch):
print ch*60
def printHeader(txt):
vtxt = txt
print vtxt.center(60)
def printHeaderLeft(txt):
vtxt = txt
print vtxt.ljust(60)
def printHeaderLeftFormat(txt):
vtxt = txt
print("{:10.4f}".format(vtxt))
def printStatus(Servername , ServerStatus):
print '%-50s%50s' %(Servername,ServerStatus)
def printFooter(txt):
vtxt = txt + ' ' + version
printline('=')
printHeaderLeft(txt)
printHeaderLeft(version)
def helpUsage():
printline('=');
print 'Usage: startAll.py [-help]'
print ' [-func] provide function either start or stop or status or metrik or parameter'
print ' [-prop] provide the property file'
print ' [-what ] which component to be start / stop or status All, ReportServer, ManagedServer, OHS'
print ' [-components ] list of Components (AdminServer, WLS_FORMS, WLS_REPORTS or ohs1 or repserver1,repserver2 etc'
print ''
printline('=');

def startNodeManagerIntern():
startNodeManager(verbose='true', NodeManagerHome=domainHome+'/nodemanager/',ListenPort=nmPort, ListenAddress=nmHost)
def stopNM():
stopNodeManager();

def disconnectNM():
nmDisconnect();
v_nmConnect='0';
return v_nmConnect;

def connectNM():
v_nmConnect = runNMConnection()
return v_nmConnect;
def runNMConnection():
x =''
try:
printHeaderLeft ('==================== Try to connect to NM ====================')
nmConnect(nmUser, nmPassword, nmHost, nmPort, v_domainName, domainHome);
printHeaderLeft ('==================== Connect to NodeManager ==================== ')
return 1
except Exception, e:
printline('-')
print e
x = '(Connection refused)' in str(e)
if x == 1:
print 'Error connect to NodeManager: Please test if NodeManager is up and running on Port:'+configProps.get("nm.port")
if nm.startauto =='true':
printline('-')
printBold('Try to start NodeManager')
startNodeManagerIntern()
nmConnect(nmUser, nmPassword, nmHost, nmPort, v_domainName, domainHome);
return 1
else:
return 0
def serverStatusNeu(server):
cd('/ServerLifeCycleRuntimes/'+server);
return cmo.getState();
def ComponentStatusNeu(server):
cd('/SystemComponentLifeCycleRuntimes/'+server)
return cmo.getState();
def serverType(server):
cd('/SystemComponents/'+server)
ServerType=cmo.getComponentType()
return ServerType
def statusAllComponent():
serverConfig()
printHeaderLeft("==================== Status of all Components ===================== ")
v_AusgabeServer = ''
v_AusgabeStatus = ''
srvs = cmo.getSystemComponents()
domainRuntime()
for systemComponents in srvs:
if systemComponents.getName() != "forms1":
ServerName=systemComponents.getName();
v_AusgabeServer ="Server Name " + ServerName;
serverState=ComponentStatusNeu(ServerName)
v_AusgabeStatus = " Status " + serverState;
printStatus( v_AusgabeServer,v_AusgabeStatus)
serverConfig()

def statusAllWLS():
v_AusgabeServer = ''
v_AusgabeStatus = ''
srvs = cmo.getServers()
domainRuntime()
for server in srvs:
ServerName=server.getName();
v_AusgabeServer ="Server Name " + ServerName;
serverState=serverStatusNeu(ServerName)
v_AusgabeStatus = " Status " + serverState;
printStatus( v_AusgabeServer,v_AusgabeStatus)
serverConfig()

def startWLSName(ServerName,v_nmConnect):
if v_nmConnect==1:
nmstart(ServerName,'Server');
else:
start(ServerName,'Server');
def startAllWLS(vConnectToAdminServer):
ServerName=''
serverState=''
srvs = cmo.getServers()
domainRuntime()
for server in srvs:
if server.getName() != "AdminServer":
ServerName=server.getName();
serverState=serverStatusNeu(ServerName)
printHeaderLeft( ServerName +" Status " + serverState)
if serverState !="RUNNING":
if ServerName == 'WLS_FORMS' and forms_start=='true':
startWLSName(ServerName,0)
elif ServerName == 'WLS_REPORTS' and reports_start=='true':
startWLSName(ServerName,0)
else:
startWLSName(ServerName,0)
def connectAdminServer(v_nmConnect):
statusAdminServer=''
if v_nmConnect==1:
statusAdminServer=nmServerStatus('AdminServer')
printHeaderLeft('Status =>'+statusAdminServer)
if statusAdminServer=='SHUTDOWN':
try:
return 0
except Exception, e:
print "You are not connect to AdminServer"
return 0
else:
try:
connect(domainUsername,domainPassword,domainConnectUrl)
return 1
except Exception, e:
print "You are not connect to AdminServer"
return 0


def statusAll(v_nmConnect):
printline('==')
vConnectToAdminServer=connectAdminServer(v_nmConnect)
try:
if vConnectToAdminServer ==1:
printHeaderLeft('==================== Status All : Admin and Managed Server ====================')
statusAllWLS()
printHeaderLeft('==================== Status All : All Components ===================')
statusAllComponent()
else:
printline('=')
printStatus("AdminServer" , "Down")
printline('=')
except Exception, e:
print "Not able to send Status Information"
def stopAdminserver(v_nmConnect):
printline('==')
if v_nmConnect==1:
printHeader('Will shutdown AdminServer while connected to NodeManager')
nmKill('AdminServer')
else:
printHeader('Will shutdown AdminServer while not connected to NodeManager')
shutdown('AdminServer','Server','false')

def stopWLSServer(ServerName):
shutdown(ServerName,'Server','true',1000,block='true');

def stopAllWLS(vConnectToAdminServer):
if vConnectToAdminServer==1:
srvs = cmo.getServers()
domainRuntime()
for server in srvs:
if server.getName() != "AdminServer":
ServerName=server.getName();
serverState=serverStatusNeu(ServerName)
print ServerName +" Status " + serverState
if serverState =="RUNNING":
stopWLSServer(ServerName);

def stopAll(v_nmConnect):
printline('==')
vConnectToAdminServer=connectAdminServer(v_nmConnect)
try:
if vConnectToAdminServer ==1:
printHeader('\t\t Start All : Admin is running start Managed Server')
statusAllWLS()
printline('==')
printHeader('\t\t Status All : All Components')
statusAllComponent()
printline('==')
printHeader('\t\t Will stop : All Components')
stopAllWLS(vConnectToAdminServer)
stopAllComponent()
printHeader('Will shutdown AdminServer')
stopAdminserver(v_nmConnect)
print nmServerStatus('AdminServer')
stopNM()
else:
printline('==')
printStatus("AdminServer" , "Down")
nmStart('AdminServer');
vConnectToAdminServer=connectAdminServer(v_nmConnect)
if vConnectToAdminServer ==1:
printStatus("AdminServer" , "Up and running")
statusAllWLS()
statusAllComponent()
stopAllWLS(vConnectToAdminServer)
stopAllComponent()
stopAdminserver(v_nmConnect)
stopNM()
printline('==')
except Exception, e:
print "Not able to send Status Information"

def startAll(v_nmConnect):
printline('==')
vConnectToAdminServer=connectAdminServer(v_nmConnect)
try:
if vConnectToAdminServer ==1:
printHeader('\t\t Start All : Admin is running start Managed Server')
statusAllWLS()
printline('==')
printHeader('\t\t Status All : All Components')
statusAllComponent()
startAllWLS(vConnectToAdminServer)
serverConfig()
startAllComponent()
printline('==')
domainRuntime()
statusAllComponent()
else:
printline('==')
printStatus("AdminServer" , "Down")
nmStart('AdminServer');
vConnectToAdminServer=connectAdminServer(v_nmConnect)
if vConnectToAdminServer ==1:
printStatus("AdminServer" , "Up and running")
startAllWLS(vConnectToAdminServer)
startAllComponent()
printline('==')
except Exception, e:
print "Not able to send Status Information"

def startComponent(ComponentName):
print "Start Component "+ ComponentName;
cd('/SystemComponentLifeCycleRuntimes/'+ComponentName)
wert=cmo.start(None)
def stopComponent(ComponentName):
print "Stop Component "+ ComponentName;
cd('/SystemComponentLifeCycleRuntimes/'+ComponentName)
wert=cmo.shutdown(None)

def startAllComponent():
domainConfig()
srvs = cmo.getSystemComponents()
for systemComponents in srvs:
if systemComponents.getName() != "forms1":
ServerName=systemComponents.getName();
domainRuntime()
serverState=ComponentStatusNeu(ServerName)
print "Status "+serverState
if serverState !="RUNNING":
domainConfig()
if serverType(ServerName) =='ReportsServerComponent' and standalone_start=='true':
domainRuntime()
startComponent(ServerName);
domainConfig()
elif serverType(ServerName) =='ReportsToolsInstance' and standalone_start=='true':
domainRuntime()
startComponent(ServerName);
domainConfig()
elif serverType(ServerName) =='OHS' and ohs_start=='true':
domainRuntime()
startComponent(ServerName);
domainConfig()

def stopAllComponent():
printline('==')
domainConfig()
srvs = cmo.getSystemComponents()
domainRuntime()
for systemComponents in srvs:
if systemComponents.getName() != "forms1":
ServerName=systemComponents.getName();
serverState=ComponentStatusNeu(ServerName)
print "Status "+serverState
if serverState =="RUNNING":
print "stopping "+ServerName
stopComponent(ServerName);
serverState=ComponentStatusNeu(ServerName)
print "Status "+serverState

def All():
print "all"
v_nmConnect=connectNM()
if v_nmConnect==1:
print "Your are Connected to NodeManager"
if func in ("status"):
statusAll(v_nmConnect)
elif func in ("stop"):
stopAll(v_nmConnect)
elif func in ("start"):
startAll(v_nmConnect)
elif func in ("metrik"):
showMetrik();
elif func in ("monitorJVMHeapSize"):
monitorJVMHeapSize();
elif func in ("showPatch"):
showPatches();
elif func in ("parameter"):
showParameter();
elif func in ("changeLogfile"):
changelogfile();
elif func in ("showHealth"):
monitorHealth();
elif func in ("createReportTool"):
createReportTool();
elif func in ("createReportServer"):
createReportServer();
elif func in ("deleteReportTool"):
deleteReportTool();
elif func in ("deleteReportServer"):
deleteReportServer();

else :
print "You did not define status,start or stop please try again"
exit()
else:
print "You are not Connected to NodeManager, Please start NodeManager and start again"
exit()
def createReportServer():
v_nmConnect=connectNM()
connectAdminServer(v_nmConnect);
createReportsServerInstance(instanceName=vReportServer, machine=vAdminServer);
def createReportTool():
v_nmConnect=connectNM()
connectAdminServer(v_nmConnect);
createReportsToolsInstance(instanceName=vReportTool, machine=vAdminServer)
def deleteReportTool():
if vDeleteReportsTool=='true':
v_nmConnect=connectNM()
connectAdminServer(v_nmConnect);
deleteReportsToolsInstance(instanceName=vReportTool )
def deleteReportServer():
if vDeleteReportsServer=='true':
v_nmConnect=connectNM()
connectAdminServer(v_nmConnect);
deleteReportsServerInstance(instanceName=vReportServer )
def ReportServer(components):
connectNM()
print "ReportServer"
if len(components) ==0:
reportsServers=configProps.get("reports.servers")
else:
reportsServers =components
print reportsServers
def ManagedServer(components):
connectNM()
print "ManagedServer"
ManagedServers=configProps.get("managed.servers")
print ManagedServers
def OHS(components):
connectNM()
print "OHS"
ohsServers=configProps.get("ohs.servers")
print ohsServers
def showParameter():
printHeaderLeft ('==================== Show Parameter ==================')
printHeaderLeft ("NM Port : " + configProps.get("nm.port"))
printHeaderLeft ("NM Host : " +configProps.get("nm.host"))
printHeaderLeft ("NM Password : " +configProps.get("nm.password"))
printHeaderLeft ("NM Username : " +configProps.get("nm.username"))
printHeaderLeft ("NM Startauto : " +configProps.get("nm.startauto"))
printHeaderLeft ("Domain Name : " +configProps.get("domain.name"))
printHeaderLeft ("Domain Home : " +configProps.get("domain.home"))
printHeaderLeft ("Domain User : " +configProps.get("domain.username"))
printHeaderLeft ("Domain Passw : " +configProps.get("domain.password"))
printHeaderLeft ("Admin Port : " +configProps.get("domain.adminport"))
printHeaderLeft ("Admin URL : " +configProps.get("domain.connecturl")+":"+domainAdminPort)
printHeaderLeft ("Http Start : " +configProps.get("ohs.start"))
printHeaderLeft ("Forms Start : " +configProps.get("Forms.start"))
printHeaderLeft ("Reports Start: " +configProps.get("Reports.start"))
printHeaderLeft ("Standalone St: " +configProps.get("Standalone.start"))
printHeaderLeft ("Version : " +configProps.get("jpt.version"))

def showMetrik():
#print "showMetrik"
v_nmConnect=connectNM()
printline('##')
if v_nmConnect==1:
connectAdminServer(v_nmConnect);
print "Your are Connected to NodeManager"
serverRuntime()
cd('ApplicationRuntimes')
custom()
cd ('oracle.dms')
displayMetricTableNames(servers='WLS_FORMS')
printline('##')
print ('###### displayMetricTableNames #####')
displayMetricTables('oracle_forms:FormsUserSessions',servers='WLS_FORMS')
print ('###### FormsRuntimeInfo #####')
displayMetricTables('FormsRuntimeInfo',servers='WLS_FORMS')
print ('###### ExitedSessions #####')
displayMetricTables('oracle_forms:ExitedSessions',servers='WLS_FORMS')
print ('###### NumberOfSessions #####')
displayMetricTables('oracle_forms:NumberOfSessions',servers='WLS_FORMS')
print ('###### ResourceUsage #####')
displayMetricTables('oracle_forms:ResourceUsage',servers='WLS_FORMS')
def monitorJVMHeapSize():
v_nmConnect=connectNM()
connectAdminServer(v_nmConnect);
serverNames = cmo.getServers()
domainRuntime()
printHeader ('==================== Monitor JVM Heap Siye ==================')
for name in serverNames:
printHeaderLeft( 'Now checking '+name.getName())
try:
cd("/ServerRuntimes/"+name.getName()+"/JVMRuntime/"+name.getName())
# Get the server runtime mbean
serverRuntime = getMBean("ServerRuntimes/" + serverName)
heapSizeCurrent = serverRuntime.getJVMRuntime().getHeapSizeCurrent()

heapSizeMax = serverRuntime.getJVMRuntime().getHeapSizeMax()

printHeaderLeft("Current heap size: " + str(heapSizeCurrent))
printHeaderLeft("Max heap size: " + str(heapSizeMax))
except WLSTException,e:
print "Ignoring exception " + e.getMessage()
def monitorHealth():
v_nmConnect=connectNM()
connectAdminServer(v_nmConnect);
#serverNames = cmo.getServers()
domainRuntime()
cd('ServerRuntimes')
serverNames=domainRuntimeService.getServerRuntimes()
printHeader ('==================== Monitor JVM Heap Siye ==================')
for name in serverNames:
printHeaderLeft( 'Now checking '+name.getName())
try:
cd("/ServerRuntimes/"+name.getName()+"/JVMRuntime/"+name.getName())
# Get the server runtime mbean
serverRuntime = getMBean("ServerRuntimes/" + serverName)
heapSizeCurrent = int(serverRuntime.getJVMRuntime().getHeapSizeCurrent())/(1024*1024)
heapSizeFree = int(serverRuntime.getJVMRuntime().getHeapFreeCurrent())/(1024*1024)
heapSizeMax = int(serverRuntime.getJVMRuntime().getHeapSizeMax())/(1024*1024)

printHeaderLeft("Current heap size: " + str(heapSizeCurrent))
printHeaderLeft("Max heap size: " + str(heapSizeMax))
printHeaderLeft("Free heap size: " + str(heapSizeFree))
printHeaderLeft("Server State " + name.getState())
printHeaderLeft("Server ListenAddress " + name.getListenAddress())
printHeaderLeft("Server ListenPort " + str(name.getListenPort()) )
printHeaderLeft("Server Health State " + str(name.getHealthState()))
serverConfig()
printHeaderLeft("==================== Status of all Components ===================== ")
srvs = cmo.getSystemComponents()
domainRuntime()
for systemComponents in srvs:
ComponentName=systemComponents.getName();
printHeaderLeft(" ComponentName :" +ComponentName)


except WLSTException,e:
print "Ignoring exception " + e.getMessage()
def showPatches():
v_nmConnect=connectNM()
connectAdminServer(v_nmConnect);
show_patches()
def changelogfile():
vFileCount=20
vFileSize=5000
vLogFileArchive='logs/archive'
printHeaderLeft('Change Logfile');
v_nmConnect=connectNM()
connectAdminServer(v_nmConnect);
serverNames = cmo.getServers()
edit()
startEdit()
printHeaderLeft('Start Change Domain Logfile '+v_domainName)
cd('/Log/'+v_domainName);
cmo.setRotateLogOnStartup(true)
cmo.setFileMinSize(vFileSize)
cmo.setNumberOfFilesLimited(true)
cmo.setFileCount(vFileCount)
cmo.setLogFileRotationDir(vLogFileArchive)
activate()
startEdit()
printHeaderLeft('Start Change all Server inside '+v_domainName)
for name in serverNames:
printHeaderLeft( 'Now checking '+name.getName())
cd('/Servers/'+name.getName()+'/Log/'+name.getName())
cmo.setRotateLogOnStartup(true)
cmo.setFileMinSize(vFileSize)
cmo.setNumberOfFilesLimited(true)
cmo.setFileCount(vFileCount)
cmo.setLogFileRotationDir(vLogFileArchive)
cmo.setRedirectStderrToServerLogEnabled(true)
cmo.setRedirectStdoutToServerLogEnabled(true)
cd('/Servers/'+name.getName()+'/WebServer/'+name.getName()+'/WebServerLog/'+name.getName())
cmo.setRotateLogOnStartup(true)
cmo.setFileMinSize(vFileSize)
cmo.setNumberOfFilesLimited(true)
cmo.setFileCount(vFileCount)

activate()
exit()

func='status'
propfile='domain.properties'
what='All'
components=''
vConnectToAdminServer=0
v_nmConnect=0
# sys parameters
for i in range(len(sys.argv)):
if sys.argv[i] in ("-help"):
helpUsage()
elif sys.argv[i] in ("-func"):
if i+1 < len(sys.argv):
func = sys.argv[i+1]
elif sys.argv[i] in ("-prop"):
if i+1 < len(sys.argv):
propfile = sys.argv[i+1]
elif sys.argv[i] in ("-what"):
if i+1 < len(sys.argv):
what = sys.argv[i+1]
elif sys.argv[i] in ("-components"):
if i+1 < len(sys.argv):
components = sys.argv[i+1]
if len(func)==0 or len(propfile)==0 or len(what)==0:
print 'Missing required arguments (-func, -prop, -what)'
print ' '
helpUsage()

# Load Connection Properties
propInputStream = FileInputStream(propfile)
configProps = Properties()
configProps.load(propInputStream)
nmPort=configProps.get("nm.port")
nmHost=configProps.get("nm.host")
nmPassword=configProps.get("nm.password")
nmUser=configProps.get("nm.username")
nm.startauto=configProps.get("nm.startauto")
v_domainName=configProps.get("domain.name")
domainHome=configProps.get("domain.home")
domainUsername=configProps.get("domain.username")
domainPassword=configProps.get("domain.password")
domainAdminPort=configProps.get("domain.adminport")
domainConnectUrl=configProps.get("domain.connecturl")+":"+domainAdminPort
domainNodeManagerConfigFile=configProps.get("domain.nodemanagerconfigfile")
domainNodeManagerKeyFile=configProps.get("domain.nodemanagerkeyfile")
ohs_start=configProps.get("ohs.start")
forms_start=configProps.get("Forms.start")
reports_start=configProps.get("Reports.start")
standalone_start=configProps.get("Standalone.start")
vReportServer=configProps.get("Standalone.ReportServer")
vReportTool=configProps.get("Standalone.ReportTool")
vAdminServer=configProps.get("Standalone.AdminServer")
vDeleteReportsTool=configProps.get("Standalone.ReportToolDelete")
vDeleteReportsServer=configProps.get("Standalone.ReportServerDelete")
jptVersion=configProps.get("jpt.version")
if what in ("All"):
## we want to start the whole domain incl. AdminServer, ManagedServer,HTTP Server and all Reports Server
All()
nmDisconnect();
elif what in ("ReportServer"):
ReportServer(components)
elif what in ("ManagedServer"):
ManagedServer(components)
elif what in ("OHS"):
OHS(components)
else :
print helpUsage()
printFooter(jptVersion)
if vConnectToAdminServer==1:
disconnect()
if v_nmConnect==1:
disconnectNM()



Diskussionen

Es gibt noch keine Kommentare.

Hinterlasse einen Kommentar