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 {productName} nodes in a domain

[[sthref1700]]

=== Synopsis

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

[[sthref1701]]

=== Description

The `list-nodes` subcommand lists all {productName} 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
{productName} on the host that the node represents

* A comma-separated list of the names of the {productName} 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 {productName} Nodes

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

[source]
----
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 {productName} Nodes

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

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

[[GSRFM689]][[sthref1706]]

==== Example 3   Listing {productName} Nodes in Long Format

This example lists the {productName} nodes in the domain `domain1`
in long format.

[source]
----
asadmin> list-nodes --long=true
NODE NAME           TYPE     NODE HOST          INSTALL DIRECTORY     REFERENCED BY
localhost-domain1   CONFIG   localhost          /export/glassfish7
sj02                SSH      sj02.example.com   /export/glassfish7    pmd-i2, yml-i2
sj01                SSH      sj01.example.com   /export/glassfish7    pmd-i1, yml-i1
devnode             CONFIG   localhost          /export/glassfish7    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)]


