rget, rput - network pipe

     rget [-lcio] [-h host] key [command [arg ...]]
     rput [-lcio] [-h host] key [command [arg ...]]

     Rput and rget set up a TCP/IP channel to connect two processes  together.
     They can looked upon as a remote pipe.  Consider the well known method of
     copying a directory tree with tar:

         (cd src && tar cf - .) | (cd dst && tar xfp -)

     If the directory tree is to be copied to another machine then one can use
     the following command on the source machine:

         cd src && rput foo tar cf - .

     And on the destination machine:

         cd dst && rget -h source-machine foo tar xfp -

     The key is either a port number in C style decimal, octal or  hex,  or  a
     random  string  that  is  hashed  to  a port number.  Rput uses this port
     number to open a TCP socket that rget using the same key can connect  to.
     It  is  customary  to  start  rput  first, although rget will retry for 2
     minutes trying to connect to the remote rput.

     After the connection is established either utility will  execute  command
     with  the  given arguments with the TCP channel as either standard output
     (rput) or standard input (rget).  Rput and rget do not  stay  around  for
     the  command  to finish, they simply overlay themselves with the command.
     If no command is given then they will themselves copy standard input into
     the TCP channel (rput), or output from the TCP channel to standard output
     (rget).  So these two commands have the same effect:

         rput foo tar cf - .
         tar cf - . | rput foo

     The second form has two  processes  copying  data  instead  of  just  tar
     directly  writing its output into the TCP channel.  There is a better way
     to waste processor cycles, namely to save bandwidth:

         cd src && tar cf - . | rput foo compress

         cd dst && rget -h source-machine foo uncompress | tar xfp -

     Rput and rget can be very useful in  the  windowed  environments  we  use
     these  days.   The  rput  can  be  typed into the window that has a shell
     running on one machine, and the rget is then typed into the  window  that
     has  a  shell running on another machine.  This is easier than one of the
     two well known forms that use rsh:

         cd src && tar cf - . | rsh dest-machine "cd dst && tar xfp -"

         cd dst && rsh source-machine "cd src && tar cf - ." | tar xfp -

     Especially since these forms require that one must be  able  to  use  rsh
     without a password, which may not always be the case.

     The key can be any string of characters of any length.  If its  a  number
     then  it  is  used directly as the port number.  Otherwise the characters
     binary values are multiplied together, bit 15 is set and  the  result  is
     truncated to 16 bits to make it a port number in the anonymous port space
     (32768 - 65535).  The port may be in-use on the source machine, but there
     is a small chance of this happening, and if so simply choose another key.
     (So if you use rput and rget in an  unattended  script  then  you  should
     reserve a port number, otherwise a connection can't be guaranteed.)


          These flags allow one  to  reverse  the  default  connect/listen  or
          input/output  direction  of rput and rget.  Reversing the connection
          may be necessary if one of the two systems filters  out  connections
          to unknown ports.  For example:

              rput -c -h destination-machine foo tar cf - .

              rget -l foo tar xfp -

          The -io options can be used to choose which  of  standard  input  or
          output should be tied to the socket.  It's even possible to tie both
          input and output to the socket with -io, but only when  executing  a
          command.   This  is probably the only use for these options, because
          one usually chooses the direction with the mnemonic put/get names.

     -h host
          The name of the remote host that a connection must be made  to.   It
          must  be  used  with  the program that is doing the connect, usually
          rget.  This option is currently mandatory.  The author  is  planning
          to increase ease of use by letting the programs find each other with
          UDP broadcasts or multicasts.



     rput: Address in use
          If the port computed out of key is already in use.

     Kees J. Bot <kjb@cs.vu.nl>