Sponsored Content
Top Forums UNIX for Beginners Questions & Answers How to run script through CGI? Post 302998293 by Corona688 on Monday 29th of May 2017 11:48:24 AM
Old 05-29-2017
A CGI script can't ask for input, it has to receive it in the first place, i.e. given by an HTML page web form. If it doesn't receive the input it wants, it should print a warning and quit.

Code:
<html><body>

<form action="http://mysite/cgi-bin/myscript.cgi" method="get">
<input type='text' name='somevalue1'>
<input type='text' name='somevalue2'>
<input type='submit'>
</form>
</body></html>

Hitting submit on this webpage will cause it to load a URL like http://mysite/cgi-bin/myscript.cgi?somevalue1=asdf&somevalue2=qwerty . The method="get" is important, since POST requests work differently.

The entire string somevalue1=asdf&somevalue2=qwerty will be found in QUERY_STRING which you can process as you please. I often do something like:

Code:
OLDIFS="$IFS"
IFS="&="
set -- $QUERY_STRING
IFS="$OLDIFS"

...which will leave $1 as "somevalue1", $2 as "asdf", $3 as "somevalue2", and $4 as "qwerty". set -- is a special, ancient syntax which sets the shell's $1 $2 ... argument variables, and IFS is a special variable which controls what characters the shell splits on - usually spaces, but here we use it to split the CGI string on ampersands and equals.

You can process that in a loop like
Code:
OLDIFS="$IFS" ; IFS="&=" ; set -- $QUERY_STRING ; IFS="$OLDIFS"

# HTML header must come before any other text is printed
echo "Content-type: text/plain"
echo

echo "QUERY_STRING was ${QUERY_STRING}"

while [ "$#" -gt 0 ] # Loop until $#, number of arguments, is zero
do
        case "$1" in
        somevalue1) echo "somevalue1 got $2" ;;
        somevalue2) echo "somevalue2 got $2" ;;
        *) ;;
        esac

        shift 2 # Delete $1 and $2, and move $3 $4 down
done


Last edited by Corona688; 05-29-2017 at 12:54 PM..
 

10 More Discussions You Might Find Interesting

1. Cybersecurity

Run CGI As User..?

Hi, My server is set up so that all cgi scripts are run as user nobody, instead of the user's username. Now I know you can use cgi-wrappers, but someone please give me detailed information, on how to make ALL scripts run on the server to by default, run as the user? And not to run as user... (1 Reply)
Discussion started by: jason6792
1 Replies

2. Shell Programming and Scripting

CGI passing arrays/hashes to another CGI script

If I have a Perl CGI script (script01), which fills an array(s) with information and outputs a HTML page with a link to another CGI page (script02); is there anyway to pass the array(s) from "script01" to "script02" when the page visitor clicks the link? Hope that makes sense! :) (2 Replies)
Discussion started by: WIntellect
2 Replies

3. UNIX for Dummies Questions & Answers

Run ksh script from cgi

Hi, I'm developing a system which requires me to run a ksh script from within a cgi script. What sort of syntax will I need to do this, I'm sure it's simple but can't find out how anywhere! Thanks. (2 Replies)
Discussion started by: hodges
2 Replies

4. Shell Programming and Scripting

how to run cgi -script on Cygwin ?

All, I would like to run a cgi script in cygwin which i have installed in WinXP. My CYGWIN directory structure is /var/www/ drwxrwx---+ 2 user Users 0 Nov 23 16:24 cgi-bin drwxrwx---+ 3 user Users 0 Oct 22 17:21 htdocs drwxrwx---+ 3 user Users 0 Oct 22 17:22 icons and another... (1 Reply)
Discussion started by: jambesh
1 Replies

5. Shell Programming and Scripting

Run system command in perl cgi

Hi guys, got a problem with a perl cgi script over here. I need it to run a system command to get the status of a process. Unfortunately the process is owned by a specific user and only this user can get its status. So i tried running the command from the perl cgi with "su", but then i get the... (12 Replies)
Discussion started by: polki
12 Replies

6. Web Development

Apache, cgi script run twice when ssl, once when not ssl

I have interesting problem. https:/host/some/x.cgi - this script has run twice when I call this url But http:/host/some/x.cgi work fine, only once. Output is text/plain. If I change output format to the Content-type text/html, then both urls works fine - executed only once. (2 Replies)
Discussion started by: kshji
2 Replies

7. Homework & Coursework Questions

Run Program from Bash CGI-Script

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: This is a problem I am having with my 2 semester senior project. I have a LAMP server running Ubuntu 9.10 with... (8 Replies)
Discussion started by: JMooney5115
8 Replies

8. Shell Programming and Scripting

Run SCP in backgroung using Perl CGI

Hi I am Run Perl CGI Script. In which i am running SCP Command. But I want that command to be run into background and exit the script. But Still Web page waiting for Finish the script. I m doing like : system ("scp -r machinename:/path/to/file/for/copy/ /path/for/ destination/directory/ &");... (3 Replies)
Discussion started by: Navrattan Bansa
3 Replies

9. Shell Programming and Scripting

Run command through html+cgi in bash

Hi everyone, I want to kill process through the web, so I create html page with single bottom that run kill command in shell script with CGI. Here is html code: <td><form METHOD="GET" action="http://IP:port/cgi_bin/script.cgi" > <input type="submit" value= "Submit" > <INPUT name="q"... (7 Replies)
Discussion started by: indeed_1
7 Replies

10. UNIX for Beginners Questions & Answers

How to convert my /bin/sh script with cgi and html to run it on browser!??

Hello, I want to run this script on my CentOS 6 via browser : ________________________________________________________________________________________________ #!/bin/sh echo Username? read MY_NAME echo Provisional file name? read MY_FILE echo File NAME you want to save? read MY_FILE2... (16 Replies)
Discussion started by: juta2020
16 Replies
AppConfig::CGI(3)					User Contributed Perl Documentation					 AppConfig::CGI(3)

NAME
AppConfig::CGI - Perl5 module for processing CGI script parameters. SYNOPSIS
use AppConfig::CGI; my $state = AppConfig::State->new(\%cfg); my $cgi = AppConfig::CGI->new($state); $cgi->parse($cgi_query); $cgi->parse(); # looks for CGI query in environment OVERVIEW
AppConfig::CGI is a Perl5 module which implements a CGI interface to AppConfig. It examines the QUERY_STRING environment variable, or a string passed explicitly by parameter, which represents the additional parameters passed to a CGI query. This is then used to update variable values in an AppConfig::State object accordingly. AppConfig::CGI is distributed as part of the AppConfig bundle. DESCRIPTION
USING THE AppConfig::CGI MODULE To import and use the AppConfig::CGI module the following line should appear in your Perl script: use AppConfig::CGI; AppConfig::CGI is used automatically if you use the AppConfig module and create an AppConfig::CGI object through the cgi() method. AppConfig::CGI is implemented using object-oriented methods. A new AppConfig::CGI object is created and initialised using the new() method. This returns a reference to a new AppConfig::CGI object. A reference to an AppConfig::State object should be passed in as the first parameter: my $state = AppConfig::State->new(); my $cgi = AppConfig::CGI->new($state); This will create and return a reference to a new AppConfig::CGI object. PARSING CGI QUERIES The "parse()" method is used to parse a CGI query which can be specified explicitly, or is automatically extracted from the "QUERY_STRING" CGI environment variable. This currently limits the module to only supporting the GET method. See AppConfig for information about using the AppConfig::CGI module via the cgi() method. AUTHOR
Andy Wardley, "<abw@wardley.org<gt"> COPYRIGHT
Copyright (C) 1997-2007 Andy Wardley. All Rights Reserved. Copyright (C) 1997,1998 Canon Research Centre Europe Ltd. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. SEE ALSO
AppConfig, AppConfig::State perl v5.12.1 2007-05-30 AppConfig::CGI(3)
All times are GMT -4. The time now is 08:19 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy