type=page
status=published
title=list-nodes
next=list-nodes-config.html
prev=list-network-listeners.html
~~~~~~
list-nodes
==========

[[list-nodes-1]][[GSRFM00187]][[list-nodes]]

list-nodes
----------

lists all \{product---name} nodes in a domain

[[sthref1700]]

Synopsis

[source,oac_no_warn]
----
asadmin [asadmin-options] list-nodes [--help] 
[--long={false|true}]
----

[[sthref1701]]

Description

The `list-nodes` subcommand lists all \{product---name} nodes in a
domain.

By default, the subcommand displays the following information for each
node that is listed:

* The name of the node
* The type of the node, which is one of the following types:::
`CONFIG`::
  The node does not support remote communication.
`DCOM`::
  The node supports communication over the Distributed Component Object
  Model (DCOM) remote protocol.
`SSH`::
  The node supports communication over secure shell (SSH).
* The name of the host that the node represents

The `--long` option of the subcommand specifies whether the nodes are
listed in long format. In long format, the following additional
information about each node is displayed:

* The path to the parent of the base installation directory of
\{product---name} on the host that the node represents
* A comma-separated list of the names of the \{product---name} instances
that reside on the node

If the `--terse` option of the
link:asadmin.html#asadmin-1m[`asadmin`(1M)] utility is `true` and the
`--long` option of the subcommand is `false`, the subcommand lists only
the name of each node.

This subcommand is supported in remote mode only.

[[sthref1702]]

Options

asadmin-options::
  Options for the `asadmin` utility. For information about these
  options, see the link:asadmin.html#asadmin-1m[`asadmin`(1M)] help page.
`--help`::
`-?`::
  Displays the help text for the subcommand.
`--long`::
`-l`::
  Specifies whether the nodes are listed in long format. +
  Possible values are as follows: +
  `true`;;
    The nodes are listed in long format.
  `false`;;
    The nodes are listed in short format (default).

[[sthref1703]]

Examples

[[GSRFM687]][[sthref1704]]

Example 1   Listing \{product---name} Nodes

This example displays the name, type, and host for all \{product---name}
nodes in the domain `domain1`.

[source,oac_no_warn]
----
asadmin> list-nodes
localhost-domain1  CONFIG  localhost
sj02  SSH  sj02.example.com
sj01  SSH  sj01.example.com
devnode  CONFIG  localhost
Command list-nodes executed successfully.
----

[[GSRFM688]][[sthref1705]]

Example 2   Listing Only the Names of \{product---name} Nodes

This example uses the `--terse` option of the `asadmin` utility to list
only the names of the \{product---name} nodes in the domain `domain1`.

[source,oac_no_warn]
----
asadmin> list-nodes --terse=true
localhost-domain1
sj02
sj01
devnode
----

[[GSRFM689]][[sthref1706]]

Example 3   Listing \{product---name} Nodes in Long Format

This example lists the \{product---name} nodes in the domain `domain1`
in long format.

[source,oac_no_warn]
----
asadmin> list-nodes --long=true
NODE NAME           TYPE     NODE HOST          INSTALL DIRECTORY     REFERENCED BY
localhost-domain1   CONFIG   localhost          /export/glassfish3                 
sj02                SSH      sj02.example.com   /export/glassfish3    pmd-i2, yml-i2
sj01                SSH      sj01.example.com   /export/glassfish3    pmd-i1, yml-i1
devnode             CONFIG   localhost          /export/glassfish3    pmdsa1
Command list-nodes executed successfully.
----

[[sthref1707]]

Exit Status

0::
  command executed successfully
1::
  error in executing the command

[[sthref1708]]

See Also

link:asadmin.html#asadmin-1m[`asadmin`(1M)]

link:create-node-config.html#create-node-config-1[`create-node-config`(1)],
link:create-node-dcom.html#create-node-dcom-1[`create-node-dcom`(1)],
link:create-node-ssh.html#create-node-ssh-1[`create-node-ssh`(1)],
link:delete-node-config.html#delete-node-config-1[`delete-node-config`(1)],
link:delete-node-dcom.html#delete-node-dcom-1[`delete-node-dcom`(1)],
link:delete-node-ssh.html#delete-node-ssh-1[`delete-node-ssh`(1)],
link:list-nodes-config.html#list-nodes-config-1[`list-nodes-config`(1)],
link:list-nodes-dcom.html#list-nodes-dcom-1[`list-nodes-dcom`(1)],
link:list-nodes-ssh.html#list-nodes-ssh-1[`list-nodes-ssh`(1)]


