schrodinger.job.remote_command module

exception schrodinger.job.remote_command.CommandError(sp_error=None, command='', errmsg=None, output='', userhost='', returncode=None)

Bases: Exception

Used to report external commands that fail.

When this is caught by the main cmdline driver, the error message will be printed and the usage message displayed.

__init__(sp_error=None, command='', errmsg=None, output='', userhost='', returncode=None)

The constructor takes a subprocess.CalledProcessError for the failed command, from which details of the command are extracted. A user- friendly error message will be composed from that information unless an explicit error message is provided.

schrodinger.job.remote_command.which(program, search_path=None)

Search for a file in the given list of directories. Use $PATH if no search path is specified.

Returns the absolute pathname for the first executable found.

Parameters

rogram – the executable to search for

Return type

string

Returns

the absolute pathname for the executable found, or None if the program could not be found.

schrodinger.job.remote_command.get_rsh_exec()

Return the name of the rsh-compatible program to use for executing remote commands.

schrodinger.job.remote_command.shell()

Return the pathname to a Bourne-compatible shell that can be used for running shell commands.

schrodinger.job.remote_command.remote_command(command, host, user=None, capture_stderr=False)

Execute a the given command on a particular host.

Returns a tuple containing the captured output and an error message.

Parameters
  • host (string) – the host on which to run the command

  • user (string) – the user account under which to run the command

  • command (string) – the command to be executed on the remote machine

  • capture_stderr (boolean) – should stderr be captured along with stdout?

Return type

string

Returns

the captured output from the command

Raises

CommandError – if the remote command fails

schrodinger.job.remote_command.rsh_put_cmd(remotehost, put_fn, remoteuser=None, from_remote=False)

Returns the ‘scp’ command needed to execute to copy a file to a given remote host. The actual remote command needs to be appended to the returned string.

Parameters
  • remotehost (string) – string

  • put_fn (string) – Path to the file that will be copied over. If it is a directory, it will be copied recursively

  • remoteuser (string) – Remote username

  • from_remote (bool) – If True, put from remote to local, otherwise (default) from local to remote

Return type

list

Returns

the list of command args for the command, suitable for use in subprocess functions

schrodinger.job.remote_command.get_remote_path(remoteuser, remotehost, path)

Assemble remote path from remote user, host and path.

Parameters
  • remoteuser (str or None) – Remote user, can be None

  • remotehost (str) – Remote host

  • path (str) – Remote absolute path

Return type

str

Returns

Remote path with user and host

schrodinger.job.remote_command.rsh_test(hosts)

Test remote commands to and from one or more hosts.