dntask(1) Execute VMS command procedures


dntask [options] command-procedure
[-biVh] [-t timeout]


dntask runs command procedures on a remote VMS system.
It takes advantage of the ability of the TASK object in DECnet to execute an arbitrary command procedure located in the users' login directory. The remote command procedure should output to SYS$NET rather than SYS$OUTPUT and (if interactive) read it's input also from SYS$NET.
The VMS equivalent of the (non-interactive version) command would be

TYPE node::"TASK=command-procedure"

For some example command procedures see the tasks directory of the source distribution. show_system.com is a non-interactive task that simply displays the output of the VMS "SHOW SYSTEM" command on standard output. interactive.com is an interactive task that allows you to enter DCL commands to be executed on the host VMS system. Be careful which commands you enter because they will expect input to come from the network connection, for instance programs that do screen orientated input or output will almost certainly not work.
Task names can be up to 16 characters in length because that's the limit on DECnet object names.


Send the output in binary mode. By default the output from the DECnet task is assumed to be records. This option sends the data "as is" so you can put commands like BACKUP in the task and backup to your Linux box.
Interact with the command procedure. The command procedure must be written to be interactive by reading from and writing to SYS$NET. Specifying -i for a non-interactive command procedure will cause dntask to time-out waiting for input. Not specifying -i for an interactive command procedure will cause it to exit prematurely at the VMS end.
-t timeout
Specifies the timeout in seconds for interactive command procedures. If no input has been received from either standard input or the VMS end in this time then dntask will exit. The default is 60 seconds. If the value 0 is given then dntask will wait forever (or until you kill it).
-T connect timeout
Specifies the maximum amount of time the command will wait to establish a connection with the remote node. a 0 here will cause it to wait forever. The default is 60 seconds
-h -?
Displays help for using the command.
Show the version of the tools package that dntask comes from.


The command procedure that you write MUST ALWAYS write something to SYS$NET or you will get a "connection refused" message. This is a limitation with DECnet objects.
eg. If you write a task to start a remote DECterm it would look something like this:

$ remnode=f$element(0, ":", "''f$trnlnm("sys$rem_node")'")
$ set display/create/node='remnode'
$ create/term/detach
$ def/nolog sys$output sys$net
$ write sys$output "DECterm started on ''remnode'"
$ exit

The "write" command near the end is essential.


  dntask 'myvax::show_system'

  dndir -i 'tramp"christine pjc123"::interactive'

  dndir -i 'tramp"christine -"::interactive'

Specifying "-" in the password field will prompt for the password.