EggShell allows you to pipe output from command-line programs to the web in real-time.
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.
curl -fnsOJ https://eggshell.pjy.us/static/centos36/eggshell && chmod 755 eggshell
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
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
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
This won't run on Windows — at least not yet.
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'
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
-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!
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.
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.
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