Jython Script to list websphere ports
Following Jython script will return port listings as below.
WASX7357I: By request, this scripting client is not connected to any server process. Certain configuration and application operations will be available in local mode. Server name: dmgr Node name: Server1_Manager Port#|EndPoint Name -----+------------- 7277|CELL_DISCOVERY_ADDRESS 9352|DCS_UNICAST_ADDRESS 9043|WC_adminhost_secure 9909|BOOTSTRAP_ADDRESS 8879|SOAP_CONNECTOR_ADDRESS 9100|ORB_LISTENER_ADDRESS 9401|SAS_SSL_SERVERAUTH_LISTENER_ADDRESS 9402|CSIV2_SSL_MUTUALAUTH_LISTENER_ADDRESS 9403|CSIV2_SSL_SERVERAUTH_LISTENER_ADDRESS 9060|WC_adminhost Server name: ihs Node name: Server1_Node01 Port#|EndPoint Name -----+------------- 90|WEBSERVER_ADDRESS 9008|WEBSERVER_ADMIN_ADDRESS
#-------------------------------------------------------------------------------
# Name: ListPorts()
# From: WebSphere Application Server Administration using Jython
# Role: Display the Port Numbers configured for each AppServer
# History:
# date ver who what
# -------- --- --- ----------------------------------------------------
# 10/11/01 0.3 rag Fix - configIdAsDict()
# 10/10/30 0.2 rag Include showAsDict() so it doesn't need to be imported.
# 09/01/08 0.1 rag Minor cleanup for book
# 04/30/08 0.0 rag New - written for presentation at IMPACT 2008
#-------------------------------------------------------------------------------
import re;
import sys;
try :
if 'AdminConfig' not in dir() :
import AdminConfig;
except :
print 'WebSphere Application Server scripting object unavailable: AdminConfig';
sys.exit()
#-------------------------------------------------------------------------------
# Name: ListPorts()
# Role: Display all of the configured ports by named EndPoint for each server
#-------------------------------------------------------------------------------
def ListPorts() :
SEs = AdminConfig.list( 'ServerEntry' ).splitlines();
#-----------------------------------------------------------------------------
# for each ServerEntry configuration ID
#-----------------------------------------------------------------------------
for SE in SEs :
seDict = configIdAsDict( SE );
SEname = seDict[ 'Name' ];
SEnode = seDict[ 'nodes' ];
print '''
Server name: %s
Node name: %s\n
Port#|EndPoint Name
-----+-------------''' % ( SEname, SEnode );
#---------------------------------------------------------------------------
# For the given server (SE) get the list of NamedEndPoints
# Then, for each NamedEndPoint, display the port # and endPointName values
#---------------------------------------------------------------------------
for NEP in AdminConfig.list( 'NamedEndPoint', SE ).splitlines() :
NEPdict = showAsDict( NEP )
EPdict = showAsDict( NEPdict[ 'endPoint' ] )
print '%5d|%s' % ( EPdict[ 'port' ], NEPdict[ 'endPointName' ] )
#-------------------------------------------------------------------------------
# Name: configIdAsDict()
# Role: Convert a configID into a dictionary
# Fix: "name" can include a hyphen.
#-------------------------------------------------------------------------------
def configIdAsDict( configId ) :
'configIdAsDict( configId ) - Given a configID, return a dictionary of the name/value components.'
result = {}; # Result is a dictionary
hier = []; # Initialize to simplifiy checks
try : # Be prepared for an error
#-----------------------------------------------------------------
# Does the specified configID match our RegExp pattern?
# Note: mo == Match Object, if mo != None, a match was found
#-----------------------------------------------------------------
if ( configId[ 0 ] == '"' ) and ( configId[ -1 ] == '"' ) and ( configId.count( '"' ) == 2 ) :
configId = configId[ 1:-1 ];
mo = re.compile( r'^([-\w ]+)\(([^|]+)\|[^)]+\)$' ).match( configId );
if mo :
Name = mo.group( 1 );
hier = mo.group( 2 ).split( '/' );
if mo and ( len( hier ) % 2 == 0 ) :
#---------------------------------------------------------------
# hier == Extracted config hierarchy string
#---------------------------------------------------------------
for i in range( 0, len( hier ), 2 ) :
name, value = hier[ i ], hier[ i + 1 ];
result[ name ] = value;
if result.has_key( 'Name' ) :
print '''%s: Unexpected situation - "Name" attribute conflict,
Name = "%s", Name prefix ignored: "%s"''' % ( funName, result[ 'Name' ], Name );
else :
result[ 'Name' ] = Name;
else :
print '''configIdAsDict:
Warning: The specified configId doesn\'t match the expected pattern,
and is ignored.
configId: "%(configId)s"''' % locals();
except :
( kind, value ) = sys.exc_info()[ :2 ];
print '''configIdAsDict: Unexpected exception.\n
Exception type: %(kind)s
Exception value: %(value)s''' % locals();
return result;
#-------------------------------------------------------------------------------
# Name: showAsDict()
# Role: Convert result of AdminConfig.show( configID ) to a dictionary
#-------------------------------------------------------------------------------
def showAsDict( configID ) :
'Convert result of AdminConfig.show( configID ) to a dictionary & return it.'
result = {}
try :
#---------------------------------------------------------------------------
# The result of the AdminConfig.show() should be a string containing many
# lines. Each line of which starts and ends with brackets. The "name"
# portion should be separated from the associated value by a space.
#---------------------------------------------------------------------------
for item in AdminConfig.show( configID ).splitlines() :
if ( item[ 0 ] == '[' ) and ( item[ -1 ] == ']' ) :
( key, value ) = item[ 1:-1 ].split( ' ', 1 )
result[ key ] = value
except NameError, e :
print 'Name not found: ' + str( e )
except :
( kind, value ) = sys.exc_info()[ :2 ]
print 'Exception type: ' + str( kind )
print 'Exception value: ' + str( value )
return result
#-------------------------------------------------------------------------------
# main entry point
#-------------------------------------------------------------------------------
if ( __name__ == '__main__' ) or ( __name__ == 'main' ) :
ListPorts();
else :
print 'This script should be executed, not imported.';


Leave a Reply
You must be logged in to post a comment.