###
### displayconfig.jacl
###
###
###
### Produce a short summary of some configuration
### and runtime information about the WebSphere installation.
###
### This is a bi-modal script: it can be included in the wsadmin
### command invocation like this:
###
### wsadmin.sh -username username -password password -f displayconfig.jacl all
###
### or the script can be sourced from the wsadmin command line:
###
### wsadmin> source displayconfig.jacl
### wsadmin> displayconfig.jacl all
###
### The script expects one parameter:
### arg1 - a flag -- either "all" or "config"
###
### This example demonstrates many wsadmin features:
###
proc displayconfig {flag} {
if {$flag == "config"} {
set configonly 1
} else {
if {$flag == "all"} {
set configonly 0
} else {
puts "Single argument must be \"all\" or \"config\""
return
}
}
###
### set up globals
###
global AdminControl
global AdminConfig
global AdminApp
puts "Installation summary: "
puts "----------------------------------------------------"
puts ""
###
### Get the cells/nodes/servers
###
puts "Configured cells, nodes, and servers: "
puts "----------------------------------------------------"
puts ""
set cells [$AdminConfig list Cell]
puts "Number of cells: [llength $cells]"
foreach cell $cells {
###
### Get some attributes from the config for this cell --
### the name and the security enabled flag.
###
set cname [$AdminConfig showAttribute $cell name]
set sec [$AdminConfig list Security $cell]
set enabled [$AdminConfig showAttribute $sec enabled]
puts "$cname -- security enabled: $enabled"
###
### Get a list of the nodes in this cell, and the name of each
###
set nodes [$AdminConfig list Node $cell]
puts " Number of nodes in $cname: [llength $nodes]"
foreach node $nodes {
set nname [$AdminConfig showAttribute $node name]
puts " $nname"
###
### Get a list of the servers on this node. Use getObjectName
### to see if there is a running server for this config object.
###
set servs [$AdminConfig list Server $node]
puts " Number of servers in $nname: [llength $servs]"
foreach server $servs {
puts ""
set sname [$AdminConfig showAttribute $server name]
set runserv [$AdminConfig getObjectName $server]
if {[llength $runserv] > 0} {
set state [$AdminControl getAttribute $runserv state]
puts " Server $sname is running; state is $state"
} else {
puts " Server $sname is not running"
}
###
### Get a list of the http transports on the server, and display
### host and port information for them.
###
set https [$AdminConfig list HTTPTransport $server]
puts " $sname has [llength $https] HTTPTransports"
foreach http $https {
set add [$AdminConfig showAttribute $http address]
set host [$AdminConfig showAttribute $add host]
set port [$AdminConfig showAttribute $add port]
puts " port: $port on host \"$host\""
}
}
puts ""
}
###
### Get a list of the ServerClusters and display it.
###
puts ""
set clusters [$AdminConfig list ServerCluster $cell]
puts " Number of ServerClusters in $cname: [llength $clusters]"
foreach cluster $clusters {
set clname [$AdminConfig showAttribute $cluster name]
set memberlist [$AdminConfig showAttribute $cluster members]
set members [lindex $memberlist 0]
puts " Cluster $clname has [llength $members] members"
foreach member $members {
set mname [$AdminConfig showAttribute $member memberName]
set weight [$AdminConfig showAttribute $member weight]
puts " Member $mname has weight $weight"
}
}
}
###
### Get the apps
###
puts "----------------------------------------------------"
puts ""
set apps [$AdminApp list]
puts "Number of applications: [llength $apps]"
puts ""
puts $apps
if {$configonly} {
return
}
###
### What servers are running on each node, and what apps do they have?
###
puts ""
puts "Running servers: "
puts "----------------------------------------------------"
puts ""
foreach cell $cells {
set cname [$AdminConfig showAttribute $cell name]
set nodes [$AdminConfig list Node $cell]
foreach node $nodes {
set nname [$AdminConfig showAttribute $node name]
set servs [$AdminControl queryNames type=Server,cell=$cname,node=$nname,*]
puts "Number of running servers on node $nname: [llength $servs]"
foreach server $servs {
###
### Get some attributes from the server to display; also invoke
### an operation on the server JVM to display a property.
###
set sname [$AdminControl getAttribute $server name]
set ptype [$AdminControl getAttribute $server processType]
set pid [$AdminControl getAttribute $server pid]
set state [$AdminControl getAttribute $server state]
set jvm [$AdminControl queryNames type=JVM,cell=$cname,node=$nname,process=$sname,*]
set osname [$AdminControl invoke $jvm getProperty os.name]
puts " $sname ($ptype) has pid $pid; state: $state; on $osname"
###
### Use getConfigId to see if there is config data for this
### server.
###
set configserv [$AdminControl getConfigId $server]
if {[llength $configserv] > 0} {
puts " $sname is configured."
} else {
puts " $sname is not configured; configuration must have changed after the server was started."
}
###
### Find the applications running on this server.
###
set apps [$AdminControl queryNames type=Application,cell=$cname,node=$nname,process=$sname,*]
puts " Number of applications running on $sname: [llength $apps]"
foreach app $apps {
set aname [$AdminControl getAttribute $app name]
puts " $aname"
}
puts "----------------------------------------------------"
puts ""
###
### Display the serverVersion information.
###
set svreport [$AdminControl getAttribute $server serverVersion]
puts " Server version report for this server follows:"
puts $svreport
puts "----------------------------------------------------"
puts ""
}
}
}
}
###
### Main
###
if { !($argc == 1) } {
puts "displayconfig.jacl: This script requires 1 parameter: a flag that should be \"all\" or \"config\""
puts ""
puts "e.g.: displayconfig all"
} else {
set flag [lindex $argv 0]
displayconfig $flag
}