Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

problems with exec command

by Striker (Novice)
on Feb 14, 2014 at 06:44 UTC ( [id://1074936]=perlquestion: print w/replies, xml ) Need Help??

Striker has asked for the wisdom of the Perl Monks concerning the following question:

Hi I have to run a shell script from a UI so I am using exec command, its working but I am getting a problem. Here is my code ----

#!/usr/bin/perl -w use CGI; use CGI::Carp "fatalsToBrowser"; use Text::CSV; $cgi = new CGI; print "Content-Type: text/html\n\n"; my $name=$cgi->param('name'); my $type=substr $name, 4; $file='/var/run_suite.sh'; chdir "/var"; exec "sudo -E $file $type"; print " <html> .... .... .... .... </html>";

The problem I am having is whenever the 'exec' command is running my rest of html page is not showing. My script is running for sure because I wrote 'echo' command in the script and its echoing. I want something which can run the script and while running it should display my rest of html content or if it can redirect to some other page then also its fine for me.

Replies are listed 'Best First'.
Re: problems with exec command
by Corion (Patriarch) on Feb 14, 2014 at 08:00 UTC
Re: problems with exec command
by betterworld (Curate) on Feb 14, 2014 at 14:39 UTC

    Your script is a huge security problem with both exec and system. Somebody passes a "name", and you embed it in a shell command. It may contain a ";" and an arbitrary shell command.

    Read the system() documentation about how you can pass the arguments as an array. And also filter the input. Allow only alphabetic characters, or only specific names.

Re: problems with exec command
by vinoth.ree (Monsignor) on Feb 14, 2014 at 10:19 UTC
    Corion++

    Hello Striker,

    I can see that you are executing the run_suite.shscript using exec. exec executes a command and never returns.

    If the script is not found exec returns false. It never returns true, because if the script is found it never returns at all.

    If you use the system, it executes the script and your Perl script is continued after the command has finished.


    All is well
      thanks

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://1074936]
Approved by hdb
Front-paged by toolic
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (None)
    As of 2024-04-25 00:53 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      No recent polls found