type=page
status=published
title=validate-dcom
next=validate-multicast.html
prev=uptime.html
~~~~~~
validate-dcom
=============

[[validate-dcom-1]][[GSRFM796]][[validate-dcom]]

validate-dcom
-------------

tests the connection over DCOM to a remote host

[[sthref2323]]

Synopsis

[source,oac_no_warn]
----
asadmin [asadmin-options] validate-dcom [--help]
[--windowsuser windows-user] [--windowsdomain windows-domain]
[--remotetestdir remote-test-directory]
[--verbose={false|true}] host-name
----

[[sthref2324]]

Description

The `validate-dcom` subcommand tests the connection over the Distributed
Component Object Model (DCOM) remote protocol to the remote host that is
specified as the operand of the subcommand. The DCOM protocol is
available only on Windows systems.

The prerequisites for running this subcommand are as follows:

* DCOM must be configured on the host where the domain administration
server (DAS) is running and on the remote host that is specified as the
operand of the subcommand.
* The following ports must be open on the remote host:

** DCOM port 135 or 139

** Windows Shares port 445
* The Server Windows Service is enabled on the remote host.

This subcommand verifies whether the prerequisites for creating a DCOM
node or creating a \{product---name} instance on a DCOM node are met. If
this subcommand fails, any attempt to create a DCOM node or create an
instance on a DCOM node will also fail.

You may run this command from any machine that can contact the DAS.

The subcommand tests the connection over DCOM to the remote host by
performing the following operations on the remote host:

* Resolving the host name
* Connecting to DCOM through port 135 or 139
* Connecting to Windows Shares through port 445
* Copying a script that is named `delete_me.bat` in the folder that is
specified by the `--remotetestdir` option
* Running the script to obtain a listing of the folder in which the
`delete_me.bat` was written

By default, the subcommand displays no information about the operations
that are performed to test the connection to the remote host. To display
information about these operations, set the `--verbose` option to
`true`.

This subcommand is supported in remote mode only.

[[sthref2325]]

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.
`--windowsuser`::
`-w`::
  The user on the remote host that is to run the process for connecting
  to that host through DCOM. The default is the user that is running the
  DAS process.
`--windowsdomain`::
`-d`::
  The name of the Windows domain that contains the user that the
  `--windowsuser` option specifies. The default is the name of the host
  on which the subcommand is run.
`--remotetestdir`::
  Specifies the folder on the remote host in which the subcommand
  creates the `delete_me.bat` file. The user that the `--windowsuser`
  option specifies must have write access to this folder. Otherwise an
  error occurs. The default is `C:\`
`--verbose`::
`-v`::
  Specifies whether the subcommand displays information about the
  operations that are performed to test the connection to the remote
  host. +
  Possible values are as follows: +
  `false`;;
    No information about the operations that are performed to test the
    connection is displayed (default).
  `true`;;
    The subcommand displays information about the operations that are
    performed to test the connection. +
    If the `--verbose` option is true and the `AS_DEBUG` environment
    variable is set, the subcommand also displays the command line for
    each process that is running on the remote host.

[[sthref2326]]

Operands

host-name::
  The name of the host to which to test the connection over DCOM.

[[sthref2327]]

Examples

[[GSRFM834]][[sthref2328]]

Example 1   Testing the Connection Over DCOM to a Remote Host

This example tests the connection over DCOM to the host `wpmdl2`.

[source,oac_no_warn]
----
asadmin> validate-dcom --wpmdl2
Command validate-dcom executed successfully. 
----

[[GSRFM797]][[sthref2329]]

Example 2   Verbosely Testing the Connection Over DCOM to a Remote Host

This example tests the connection over DCOM to the host `wpmdl2` and
displays information about the operations that are performed to test the
connection to the remote host.

[source,oac_no_warn]
----
asadmin> validate-dcom --verbose wpmdl2

Successfully resolved host name to: wpmdl2/192.168.122.106
Successfully connected to DCOM Port at port 135 on host wpmdl2.
Successfully connected to NetBIOS Session Service at port 139 on host wpmdl2.
Successfully connected to Windows Shares at port 445 on host wpmdl2.
Successfully accessed C: on wpmdl2 using DCOM.
Successfully wrote delete_me.bat to C: on wpmdl2 using DCOM.
Successfully accessed WMI (Windows Management Interface) on wpmdl2. There are 40
processes running on wpmdl2.
Successfully ran the test script on wpmdl2 using DCOM.
The script simply ran the DIR command. Here are the first few lines from the 
output of the dir command on the remote machine:
 
C:\Windows\system32>dir C:\
 Volume in drive C has no label.
 Volume Serial Number is XXXX-XXX
 
 Directory of C:\
 
12/05/2011  10:21 AM                63 .asadminpass
02/15/2011  01:08 PM    <DIR>          aroot
12/05/2011  04:43 PM                 8 delete_me.bat
03/03/2011  10:36 AM    <DIR>          export 
 
Command validate-dcom executed successfully. 
----

[[sthref2330]]

Exit Status

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

[[sthref2331]]

See Also

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

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


