--- layout: default navsection: userguide navmenu: Tutorials title: "Running external programs" navorder: 18 ... h1. Running external programs This tutorial demonstrates how to use Crunch to run an external program by writting a wrapper using the Python SDK. *This tutorial assumes that you are "logged into an Arvados VM instance":{{site.basedoc}}/user/getting_started/ssh-access.html#login, and have a "working environment.":{{site.basedoc}}/user/getting_started/check-environment.html* Start by entering the @crunch_scripts@ directory of your git repository: <notextile> <pre><code>$ <span class="userinput">cd you/crunch_scripts</span> </code></pre> </notextile> Next, using your favorite text editor, create a new file called @run-md5sum.py@ in the @crunch_scripts@ directory. Add the following code to compute the md5 hash of each file in a collection: <pre><code class="userinput">{% include run-md5sum.py %}</code></pre> Make the file executable: notextile. <pre><code>$ <span class="userinput">chmod +x run-md5sum.py</span></code></pre> Next, add the file to @git@ staging, commit and push: <notextile> <pre><code>$ <span class="userinput">git add run-md5sum.py</span> $ <span class="userinput">git commit -m"run external md5sum program"</span> $ <span class="userinput">git push origin master</span> </code></pre> </notextile> You should now be able to run your new script using Crunch, with "script" referring to our new "run-md5sum.py" script. <notextile> <pre><code>$ <span class="userinput">cat >the_job <<EOF { "script": "run-md5sum.py", "script_version": "you:master", "script_parameters": { "input": "c1bad4b39ca5a924e481008009d94e32+210" } } EOF</span> $ <span class="userinput">arv -h job create --job "$(cat the_job)"</span> { ... "uuid":"qr1hi-xxxxx-xxxxxxxxxxxxxxx" ... } $ <span class="userinput">arv -h job get --uuid qr1hi-xxxxx-xxxxxxxxxxxxxxx</span> { ... "output":"4d164b1658c261b9afc6b479130016a3+54", ... } </code></pre> </notextile>