eggshell.pjy.us

EggShell allows you to pipe output from command-line programs to the web in real-time.

Features

View real-time process output - Run a program in the background, viewing the output from a browser.

Access your favorite shell - interact with your server from the web.

Presentation Mode - While you are typing, others can be watching.

Installation

Centos

Python 3.6:
curl -fnsOJ https://eggshell.pjy.us/static/centos36/eggshell && chmod 755 eggshell

Ubuntu/Debian Linux

Python 3.8:
curl -fnsOJ https://eggshell.pjy.us/static/linux/eggshell && chmod 755 eggshell
Python 3.9:
curl -fnsOJ https://eggshell.pjy.us/static/linux39/eggshell && chmod 755 eggshell
Python 3.10:
curl -fnsOJ https://eggshell.pjy.us/static/linux3-10/eggshell && chmod 755 eggshell
Python 3.12:
curl -fnsOJ https://eggshell.pjy.us/static/linux3-12/eggshell && chmod 755 eggshell

From /usr/local/bin, or a location of your choice, please download the standalone linux executable (6MB - 28MB). A sample curl command is shown above. From a shell, type python3 -v to determine your python version.

Mac

curl -fnsOJ https://eggshell.pjy.us/static/mac/eggshell && chmod 755 eggshell

From /usr/local/bin, or a location of your choice, please download the standalone mac executable (7MB). A sample curl command is shown above.

Windows

This won't run on Windows — at least not yet.

From Source Code

This assumes you have python3 and pip installed

curl -fnsOJ https://eggshell.pjy.us/static/eggshell.py
pip3 install tornado

If you decide to use the python source code, in the usage examples below, replace 'eggshell' with 'python3 eggshell.py'

Usage and Examples

eggshell can be used in a few different ways.

usage: eggshell [-h] -c COMMAND [-ro GUID] [-rw GUID] [-ci URL] [-o]

optional arguments:
  -h, --help            show this help message and exit
  -c COMMAND, --command COMMAND
                        the command to be executed. Enclose in quotes
  -ro GUID, --readonly GUID
                        a guid (or ".") for read-only access
  -rw GUID, --readwrite GUID
                        a guid (or ".") for read/write access
  -ci URL, --complete-internal URL
                        url to load when finished. Enclose in quotes
  -o, --overwrite       overwrite any existing output

additional information:
  For information about GUIDs (aka UUID), please see
  https://eggshell.pjy.us/guid.  Alternatively, you may
  specify a '.' and a random one will be generated for you.

  callback urls can contain the following placeholders:
  "[rc]"   to include the process return code
  "[ro]"   the read-only GUID
  "[rw]"   the read/write GUID

Monitor Output of a Command

If you have a long-running command that you would like to monitor, use the -ro parameter - here's an example
eggshell -c 'ls -lR /' -ro a3909a4c-f1a5-4f0d-b3c2-a61cecb7e231 &

In this example, we have specified a GUID - this will give us a known location on the EggShell website to view the results - you would find the output at https://eggshell.pjy.us/v/a3909a4c-f1a5-4f0d-b3c2-a61cecb7e231

There are two points to note: you should generate your own GUIDs and never use the one shown above!

Interactive Shell

eggshell -c 'bash' -rw . &

Running this command performs two actions. Firstly, since a '.' has been specified instead of a GUID, it provides you with a random EggShell URL that will allow you to interact with the command you've specified, and then it will launch that command. Simply put: at the URL shown, you'll have an interactive command line that you can use.

If you would like someone else to be able to watch what you are doing, add the '-ro .' parameter to the command. Then give the observing party the Read Only link. They will be able to see what you are doing in real-time, but will be unable to type anything.

In this example, we used bash - to exit the bash shell, press Control-D. You're not limited to bash: we recommend using the shell you are most familiar with.

Completion Callback

The advanced, optional, -ci parameter allows you to daisy-chain events to launch a new process when the current one has completed. The callback url should be in quotes, and can contain any of the three specific placeholders to let you know what process completed.

Notes and Feedback

Process output is deleted after 24 hours. Right-click the process output to download, or to delete.

This is still a work in progress. Feedback is welcome - please email phil@pjy.us. This project is loosely based on netcat and seashells.io