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

Hello everyone, I am pretty new to Perl and am trying to hack together a script that uses Netsh. The script runs just fine in Cmd.exe but doesn't work when it is a CGI script. Strangely it ran fine this weekend but for some reason today it is giving me problems. Below I have two simplified and different versions of the code that runs fine in Cmd.exe. Thanks for the help!
print "Content-type: text/html\n\n"; open (netsh, "C:/WINDOWS/system32/netsh.exe dhcp server scope <scopeip +removed> dump|"); foreach my $line (<netsh>) { print $line; } close netsh;
Version2
print "Content-type: text/html\n\n"; print `netsh dhcp server scope <scopeipremoved> dump`;

Replies are listed 'Best First'.
Re: Weird CGI Behavior
by BrowserUk (Patriarch) on Mar 31, 2009 at 01:19 UTC

    This is almost certainly a 'permissions problem' That is, the userid under which your http server (IIS; Apache or whatever) runs, does not have the authority to execute the netsh command, whereas your own userid (when you run it on the command line) does.

    The 'fix' would be to give the user id your web server runs under the required priviledges; but you should seriously consider whether you want to do that, given the potentially substantial risks involved in allowing anyone who access your webserver, the power to mess with your system to the extent that the netsh command gives them the power to do.

    Do not underestimate the risks involved. If you have any doubts about your ability to a) control who has access to the webserver; or b) whether there is anyone who could access it that might use that access to do things that you don't want them to do; reconsider!


    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.