Scripting with pshell
Overview
If you have a supercomputing allocation, then your workflow may involve some of these steps.
There are two ways of executing pshell commands non-interactively:
a single command to run
a series of sequential commands supplied via an input script
iblis:~/dev/mfclient> python pshell -h
usage: pshell [-h] [-c CONFIG] [-i SCRIPT] [-d] [command]
pshell help
positional arguments:
command a single command to execute
optional arguments:
-h, --help show this help message and exit
-c CONFIG the server in $HOME/.mf_config to connect to
-i SCRIPT input text file containing commands
-d turns debugging on
The delegate command is intended for performing automated authentication in the context of a (non-interactive) submitted job.
This means that pshell commands can be run without the need to type in username and password, within the lifetime of the delegate (default 7 days.)
Exercises
Exercise 1 - create a delegate and check that pshell is using it.
This exercise can only be done when logged in with a Pawsey username and password. Delegate identities are not allowed to create further delegates.
Perform the following:
run pshell and log in using your Pawsey credentials
examine your identity
create a delegate
exit and restart pshell
check your identity
Exercise 2 - running commands from the shell
Run pshell from the command line to:
check your identity,
list the contents of the /projects/Data Team/testfiles remote folder,
download a single file.
Exercise 3 - script a task to download a file in your directory.
Perform the following:
create a text file to change into the /projects/Data Team/testfiles directory and download a file
use this script as input to pshell
Exercise 4 - script a task that attempts to perform something that will fail (eg remove a directory that doesn't exist) and correctly report that the script encountered an error.
Perform the following:
write a shell (eg bash) script to run a single pshell command to remove the remote folder /idontexist
based on the exit code being 0 if successful and non 0 on failure, report that there was a problem