The SSHPipe_Provider implements a data source provider (see Introduction) that controls command driven programs on the end of an SSH Pipe into a remote (or local) system.
To use the ssh pipe provider:
NSCLDAQ-11.x must be installed on the target system in the same installation directory try as in the host system.
The path to the remote program must be valid on the remote system. For the most part this works best when the local and remote systems share filesystems.
Password-less logins have been set up between the local and remote systems. A procedure for this can be found by googling ssh without password. One hit that is valid as of today is: http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/
The parameters required for the SSHPipe data source provider are:
The host on which the readout runs. The readout host must resolve via DNS or alternatively can be a dotted IP number.
The full path to the Readout program in the remote host.
The working directory in the remote host desired for the readout program. This defaults to the remote home directory. Often, if readoutPath is the path to the readout program, what is desired is:
file dirname $readoutPath.
Parameters that will be passed on the command line to the Readout program when it is run. For eample for NSCL Readout programs, --ring=some-non-default-ring is often used.
Readout programs are sent specific commands in specific ways. This places the following requirements on Readout program that will be controlled via SSHPipe:
Readout programs must be command drive and expect comands on their stdin file descriptor.
Readout program output you want seen by the user must be sent to either stdout or stderr
An endfile on the stdin pipe must exit the program.
The exit command must exit the program.
The set varname value
command must be defined for the variables title
and run
and set the run number and title
accordingly.
The begin command must start a new run.
The end command must end an active run.
The pause command must pause an active run.
The resume command must resume paused run.
The init command must cause an on-demand initialization procedure, e.g. loading firmware.
If your Readout program meets most of the requirements in the section READOUT PROGRAM REQUIREMENTS above, you may still be able to use the SSHPipe provider by wrapping it appropriately. For example:
Readout cannot pause/resume. Make a new provider that implements all of its API entries by calling the ::SSHPipe:: entry, however your capabilities proc will force the value of the canPause capability to false.