SSH OneShot is a little iPhone app that lets you store individual ssh commands that you run on your computer or server. The Lite version is limited to two folders to organize your commands, but can be unlocked to unlimited folders with 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:
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).
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.
Is it secure ?
Passwords are stored in the iOS keychain, and all network communication is via SSH, so, well, yes.
Press and hold a command or a folder and you can reorder it, file it in a folder, or use the edit and delete buttons at the bottom of the screen.