Triggering UNIX command from Web Browser

HI,
I want to trigger a UNIX command from a web browser page.
The web browser will have few steps which will generate the UNIX command and then it should connect to the UNIX box and fire that command.

Here we are using Sun Solaris UNIX.

Can you please suggest me how can i get connected to the UNIX box and pass the sting of command to fetch the result.

:o

That depends on the programming language you use for your webapplications. Also, the command would be executed under the webservers userid. Please explain in more detail what you want to do.

HI
We are mainly trying to give access to the UNIX box to the users, which is been used to just extract few log files from the application server.
Hence we are developing a HTML page where it will ask few details about the required log files which is to be searched on the UNIX box in a particular server folder, and that log file would get e-mailed to the user.

The language used in the web page would be simple HTML Forms. (if required then C#)

So we need some connect string which can pass the generated UNIX cmd from the HTML page to the application server which will fetch the output

Thanks
Abhijeet

So what you need is basically a cgi script that is called in the action handler of a html form. You can write cgi scripts in many programming languages, many people prefer perl for this, but you can also use shellscripts.

If you write a shellscript, you can user the environment variable $QUERY_STRING supplied by the webserver and perform actions based on its contents.

If you want to run the script under a different userid than the webserver you need a mechanism like sudo.

But how do i send the created query to the UNIX server.

If you can show me an simple example that would be great.

Like i need to pass simple ls -ltrh >temp1 on a application server in mount point eg - /onestmp

how do i pass and capture the command.

Like i need to pass simple ls -ltrh >temp1 on a application server in mount point eg - /onestmp
how do i pass and capture the command.

How you pass the command depends on your programming language - if t's a shell script, you "pass" it exactly as you wrote it. With Perl, you'd use "system".

As you sent the output to a file, you just need to read that file to get the output. That's often the easiest way to do it, especially for something as simple as "ls" that you don't need to interact with. Programming feeding and reading one program from another is more complicated.

---------- Post updated at 11:36 AM ---------- Previous update was at 11:23 AM ----------

Heres another way to do that:

#

!/usr/bin/perl
print "Content-TYPE: text/html\n\n";
print "<ul>";
open(READ,"ls -ltrh|");
while (<READ>) {
 print "<li>$_";
}
print "</ul>";

OK, here is a working example:

First you need a html page with form(s), lets call it test.html and you put it into the document root of the server:

<html><head><title>Test Form</title></head>
<body>
  <form action="/cgi-bin/test.cgi" method="get">
    input for GET: <input name="get_input">
    <input type=submit value="Submit via GET">
  </form>
  <form action="/cgi-bin/test.cgi" method="post">
    input for POST: <input name="post_input">
    <input type=submit value="Submit via POST">
  </form>
  </body>
</html>

Next you need a cgi-script. I choose a shellscript using the kornshell. You save it as "test.cgi" into the cgi-bin directory of your webserver.

#!/bin/ksh
print "Content-type: text/plain\r\n\r"
print "my query string from (GET) is \"$QUERY_STRING\""
print "\nmy stdin (from POST) is"
cat

When you open the test.html page in your browser, you can enter a string into one of the two input fields and press the submit button adjacent to it.

When you press the "Submit via GET" button, you effectively call /cgi-bin/test.cgi?get_input=your_input_string and the browser shows this output:

my query string from (GET) is "get_input=your_input_string"
my stdin (from POST) is

When you press the "Submit via POST" button, your input is sent to the stdin of the cgi-script.

my query string from (GET) is ""
my stdin (from POST) is
post_input=your_input_string

What's left for you to do is: receive the actual user's input either via GET or POST and then process the input according to your needs.

I hope, this helps to understand what's going on.