How to execute a shell script in cgi-bin?

JD Isaacks picture JD Isaacks · Sep 3, 2010 · Viewed 7.9k times · Source

OK first of all, I am a PHP programmer but I have never done anything with CGI and don't know what it is. I know it stands for Common Gateway Interface, but I do not know what it does or what its for.

I was just told that I can upload a shell script to my cgi-bin folder and execute it.

I made a shell script myscript.sh and uploaded it to my cgi-bin folder. The first thing I noticed was my cgi-bin folder is a sibling to my root directory not a child. So I do not know how I would access it?

So I created a directory under my root called cgi-bin2 and put my script there (and chmod them to 755). Then I accessed it from my browser, and all it did was download the file.

Am I missing something?

Answer

Lekensteyn picture Lekensteyn · Sep 3, 2010

CGI should send a Content-Type header:

#!/bin/sh
printf "Content-Type: text/plain\n\n"
your_commands_here

Save as anything.sh (extension does not matter) in your cgi-bin folder and chmod 755. cgi-bin does not have to be a child of your public html folder, it can be an alias.