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