DECnet on Ubuntu - Tools

Parent Category: How-to's Category: DECnet Written by Administrator


Now we will use the DECnet installation. Make sure both Ubuntu installation ("linux1" and "linux2") are up and running on the same network - be it physical or virtual.
For all examples, I will work on "linux1" and contact "linux2" over network. My username and my password are both "joerg".
There are "man" pages for each command below!

"dneigh" - Show other nodes on the net

The command "dneigh" shows other nodes on the same DECnet.

joerg@linux1:~$ dneigh
linux2 ether AA:00:04:00:0B:08 --- 1498 eth0
linux1 loop AA:00:04:00:0A:08 --- 16434 lo

Attention: in my tests, I found that "dneigh" shows other nodes only after other applications like "phone" where run.

"dnping" - test "MIRROR" object on remote node.

dnping is not as low-level as TCP/IP ping. It needs an active service on the remote host, and you must also authenticate on the remote host with username and password.

joerg@linux1:~$ dnping linux2 -u joerg -p joerg
Sent 10 packets, Received 10 packets

If something is wrong, the error is "socket: Connection refused.

"phone" - chat with other user

This is pretty cool ... at least it was so in the '80s! You can see who's logged on, and can "ring" him to talk with you over a graphical application.
1) Start phone utiltiy:


(Inside phone, all commands start with "%".)
2) see, who is logged on:

%dir linux2

3) Ring him:

%dial linux2::joerg

4) on the other side, see it "ringing". No matter what you do, your terminal display is every 10 seconds disturbed by the message

LINUX1::JOERG is phoning you on LINUX2::     (17:12:20)

5) on the other node, answer the call :


Now type text, it appears directly in your panel of the "phone" screen on both local and remote host.
6) Hang up


"sethost" - remote login

This is like "telnet". See me logging on from linux1 to linux2:

joerg@linux1:~$ sethost linux2
sethost V1.0.4
Connecting to linux2
Cterm connection. Escape Sequence is ^]

CTERM Version 1.0.6
DECnet for Linux

linux2 login: joerg

Last login: Sat Mar 20 19:51:25 CET 2010 on pts/1
Linux linux2 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16 14:04:26 UTC 2009 i686

To access official Ubuntu documentation, please visit:

0 packages can be updated.
0 updates are security updates.



"dndir" - show directory on remote node

This is the first file related command I expercise, so things are getting more VMS-like now.
All file-related DECnet commands use OpenVMS syntax for files and directories. Even if both local and remote nodes are Linuxes, the remote node is always accessed as if it would using OpenVMS.
The OpenVMS file path syntax is quite different from UNIX path logic. The generic form for VMS-file names is




Most parts of the path are optional.
I have an Eclipse-Installation in "/usr/joerg/eclipse" on "linux2". To list its installation directory, type

joerg@linux1:~$ dndir linux2::[home.joerg.eclipse]*.*


and get:


You see:

  • VMS file names are NOT case-sensitive. Filenames are ALWAYS mapped to uppercase, even if this generates duplicate filenames on the remote Linux node.


  • Subdirectories are listed as normal files, with a ".DIR" extension.

  • the VMS version number is always "1" for Linux nodes.

  • "/home" can also be accessed as device "HOME:"



You wonder about missing authentication? No log-in on the remote "linux2" is required here because

  • we have the rule ".*::.* */DEFAULT" in "/etc/dnet-proxy"

  • AND we have user "joerg" with password "joerg" on both "linux1" and "linux2".


Normally you must give username and password (for the remote node!) as part of the remote node name. So



node ”username password”


and the generic filename path is now

nodeusername password”::device:[rootdir.subdir,subdir...]file.ext;version


Whoa! To squeeze all this through the Unix-shell parameter expansion, better surround the whole stuff with single quotes:

joerg@linux1:~$ dndir 'linux2"joerg joerg"::home:[joerg.eclipse]*.*'





"dncopy" - Copy files over DECnet

This is why we're dealing with DECnet!
After managing "dndir", using "dncopy" is easy. The dncopy-Command has the usual syntax

dncopy options sourcefile targetfile


dncopy options sourcefile targetdirectory

Both source and target can reside on any machine, so you can work on a DECnet node “linux1” and copy files from ”linux2” to ”linux3”.

Here I generate a dummy-textfile “test.out” and copy it from “linux1:/home/joerg” to “linux2:/home/joerg”

joerg@linux1:~$ ls -l >test.out
joerg@linux1:~$ ls -l *.out

-rw-r--r-- 1 joerg joerg 1308 2010-03-25 10:55 test.out

joerg@linux1:~$ dncopy -s test.out 'linux2"joerg joerg"::home:[joerg]'

Sent 1308 bytes in 0.00 seconds:  infK/s

joerg@linux1:~$ dndir -l 'linux2"joerg joerg"::home:[joerg]*.out'

Directory of HOME:[JOERG]

TEST.OUT;1             1308 25-MAR-2010 10:55:57 [1750,1750] (RWED,RWD,R,R)

Be aware of file types: VMS files sometimes have an internal block structure, they are not just a stream of bytes.
At least VMS-executables (with .EXE-Extension) must be copied with the “-mblock” Option. And other binary files, as backup-dumps, too.
Read “man dncopy” and try experimenting with “-mrecord”,” -mblock” and “-b” options.

Other commands

There are still more DECnet commands. See the man pages of

  • dntype,
  • dndel,
  • dntask,
  • dnsubmit
  • and dnprint.