Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I call a local shell script from a web server?

I am running Ubuntu 11 and I would like to setup a simple webserver that responds to an http request by calling a local script with the GET or POST parameters. This script (already written) does some stuff and creates a file. This file should be made available at a URL, and the webserver should then make an http request to another server telling it to download the created file.

How would I go about setting this up? I'm not a total beginner with linux, but I wouldn't say I know it well either.

What webserver should I use? How do I give permission for the script to access local resources to create the file in question? I'm not too concerned with security or anything, this is for a personal experiment (I have control over all the computers involved). I've used apache before, but I've never set it up.

Any help would be appreciated..

like image 677
Arjun Avatar asked Dec 04 '11 20:12

Arjun


1 Answers

This tutorial looks good, but it's a bit brief.

I have apache installed. If you don't: sudo apt-get install apache2.

cd /usr/lib/cgi-bin

# Make a file and let everyone execute it
sudo touch test.sh && chmod a+x test.sh 

Then put the some code in the file. For example:

#!/bin/bash
# get today's date
OUTPUT="$(date)"
# You must add following two lines before
# outputting data to the web browser from shell
# script
 echo "Content-type: text/html"
 echo ""
 echo "<html><head><title>Demo</title></head><body>"
 echo "Today is $OUTPUT <br>"
 echo "Current directory is $(pwd) <br>"
 echo "Shell Script name is $0"
 echo "</body></html>"

And finally open your browser and type http://localhost/cgi-bin/test.sh

If all goes well (as it did for me) you should see...

Today is Sun Dec 4 ...
Current directory is /usr/lib/cgi-bin Shell
Shell Script name is /usr/lib/cgi-bin/test.sh

like image 114
Brigand Avatar answered Oct 22 '22 10:10

Brigand