SSH OneShot is a little iPhone app that lets you store individual ssh commands that you run on your computer or server. oneShot Lite is limited to two folders for organizing your commands, but unlimited folders are available as an in-app purchase.

What can I use it for?

Just about anything you can do on a command line can now be launched from your phone. The different use cases are as follows:

Commands

These are commands that you launch blindly, without waiting for an results. Examples are for starting and stopping apps and services, or accessing RESTful services via curl that trigger actions. On a Mac you can launch apps in the current open session with something like:

osascript -e 'tell application "iTunes" to activate'

This can be useful if you have a media server in a closet. Or on a Linux server:

service httpd stop

Or any other more complex executable script file that you have written.

Commands with results

These are commands that you launch and want to see the results of. This can be as simple as an “ls” on a directory to see if an ftp upload has finished, a quick service status check or something more complicated like grepping through a log file for errors. Again this can be anything launchable on the command line.

There are currently some limitations on the kinds of commands that you can run here. Interactive commands that need to know the terminal type like top, prstat and things like that will not work. Any commands that open an output stream will also not work (but I’m working on for the next release).

Status Commands

These commands add a little more interactivity. These commands will automatically fire off when you open a folder containing Status Commands and turn the button red or green depending on the results. The basic working mode is that if the command receives anything as a result, that’s good (green) and no response is bad(red).

So if you want to check if iTunes is running on the media server you can use the following command:

ps ax | grep iTunes | grep -v grep | grep -v iTunesHelper

In this example, we take the list of running processes, find all the lines containing the word iTunes (case is important!), and then, using -v eliminate the lines containing grep (which is our initial command) and the same technique to eliminate the line containing the iTunesHelper process that keeps running in the background whether iTunes is running or not. So if iTunes is running, we will get back a line from the original request, otherwise the result will be empty.

If you are having difficulty phrasing the command so that empty is bad, you can flip a switch to swap that part around. For example I check the results of my ZFS server with zpool status and look for the word “degraded” which means there’s a disk offline that I need to check on.

zpool status | grep degraded

With the “Null return is good” switch turned on.

Navigation

Press and hold a command or a folder and you can reorder it, file commands in folders, or use the edit and delete buttons at the bottom of the screen.