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

Dear Monks,

I am designing web site running Perl/CGI on Apache/Windows. This web site needs to schedule jobs and maintain a queue of jobs. I will also need to kick off jobs on remote machines. I'm thinking WMI to start remote jobs.

It might be better to write it in C# and ASP.NET, but I'm working at a Java shop. My employer wants me to use open source.

To get the prototype working I'd like to use Perl/CGI. Any suggests for languages, example, modules, etc?

Thanks. Any assistance is greatly appreciated.

  • Comment on Perl/CGI Job Scheduling/Queue Web Site on Apache/Windows

Replies are listed 'Best First'.
Re: Perl/CGI Job Scheduling/Queue Web Site on Apache/Windows
by Moron (Curate) on Nov 07, 2005 at 19:00 UTC
    The simplest way to maintain a queue of jobs is in an RDBMS such as Postgres or mysql. To run the jobs you need a simple daemon on each server - see for example Net::Daemon. To communicate between cgi and the database, perhaps DBI

    -M

    Free your mind

Re: Perl/CGI Job Scheduling/Queue Web Site on Apache/Windows
by InfiniteSilence (Curate) on Nov 07, 2005 at 19:40 UTC
    This will get you started (thinking at least):

    #!/usr/bin/perl -w use strict; use CGI ':standard'; use Win32::OLE; use Data::Dumper; my $compName = `hostname`; chop($compName); #jobfire: launch stuff on different servers with WMI, otherwise #just shell to local .bat files my @targetcomps = qw|YOURSERVERNAMESHERE|; print header; print start_html("Stuff that, if I did in .NET, I would STILL BE CODIN +G"); foreach my $comp (@targetcomps){ if($comp eq $compName) { system('c:\temp\foo.bat'); }else { my $wmiObj = Win32::OLE->GetObject(qq|WinMgmts://$comp/root/cimv2| +) or die $!; #die $! is probably wrong...check the API my ( $stuff ) = $wmiObj->ExecQuery('Select * from Win32_NetworkAda +pterConfiguration where IPEnabled = True'); #print Dumper $stuff; foreach my $st (Win32::OLE::in($stuff)) { print $st->{IPAddress}->[0]; } } } print end_html; 1;

    perl jobfire.pl Content-Type: text/html; charset=ISO-8859-1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-U +S"> <head> <title>Stuff that, if I did in .NET, I would STILL BE CODING</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1 +" /> </head> <body> 10.248.47.146 </body> </html>
    Update: Forgot to chop the ENDL from the `hostname` call.

    Celebrate Intellectual Diversity