
![]() |
gnarlyhat
I know it's not polite to ask for support on a script which is not supported but I would really appreciate it if any of you gurus can help me sort out the problem. Here is a script written by Eli ... yeah bluehat.
This is a cron script for which you throw a bunch of crontab lines and it makes sure that they won't overlap and put strain on the server. Here's the code. #!/usr/bin/ perlprint "Content-type: text/html "; use CGI qw/:cgi-lib/; use CGI::Carp qw(fatalsToBrowser); %FORM=Vars(); #Instructions ################## #Set this to the server path to the crons.txt $pathtocrontxt="/home/username/public_html/cgi-bin/crons.txt"; # In the crons.txt put the first line as 0 and then put each cronjob on a seperate line below # set the chmod permissions to crons.txt to 777 and cron.cgi to 755 ##################################### print "Running Crons... "; open(INF,"$pathtocrontxt" ![]() @commands=<INF>; close(INF); foreach $line(@commands){ chomp($line); if($line == 0){ print "not working "; @commands[0]="1 "; open(OUTF,">$pathtocrontxt"); foreach $command(@commands){ print OUTF "$command"; } close(OUTF); } elsif($line == 1){ print "working"; exit; } else { print "Executing: $line "; $output=system("$line"); print "$output "; } } @commands[0]="0 "; open(OUTF,">$pathtocrontxt"); foreach $command(@commands){ print OUTF "$command"; } close(OUTF); print " Done! "; Here's the contents of crontab.txt 0 ping www.google.com ping www.google.com.hk ping www.google.com.au ping www.google.com.sg ping www.google.com.my and here's the error I got from crontab email. quote Content-type: text/html Running Crons... not working not working Done! From my limited knowledge, I can tell that it checks for 0 on the crons.txt first line and if true print "Not working" and change it to 1 and prints out the commands and executes it. May I know why it's not working? TIA ![]() dirk
Just had a look at the script.
It's a CGI script: So isn't the input from the GUI missing if you execute it on the command line? The hash %FORM which is defined here is never used: %FORM=Vars(); Dirk gnarlyhat
I would have not idea as the script is supposed to be called by crontab and it processes all the commands in crons.txt
Would it help if I were to remove it? dirk
I have tweaked the script a little bit. It's running now.
The crucial modification was: if ( $line == 0 ) { -> if ( $line eq '0' ) { The first condition was true for every line. Here was another bug: @commands[0] = "1"; -> $commands[0] = "1"; And I have changed it to: $commands[0] = 1; It makes no sense to quote and interpolate 1. Here is the modified code: #!/usr/bin/ perl# Instructions ################## #Set this to the server path to the crons.txt $pathtocrontxt = '/home/username/public_html/cgi-bin/crons.txt'; # In the crons.txt put the first line as 0 and then put each cronjob on a seperate line below # set the chmod permissions to crons.txt to 777 and cron.cgi to 755 ##################################### print "Running Crons... "; open( INF, $pathtocrontxt ) or print "couldnt open file "; @commands = <INF>; close(INF); foreach $line (@commands) { chomp $line; if ( $line eq '0' ) { print "not working "; $commands[0] = 1; open( OUTF, ">$pathtocrontxt" ); foreach $command (@commands) { print OUTF "$command "; } close(OUTF); } elsif ( $line eq '1' ) { print "working "; exit; } else { print "Executing: $line "; $output = system $line; print "$output "; } } $commands[0] = 0; open( OUTF, ">$pathtocrontxt" ); foreach $command (@commands) { print OUTF "$command "; } close(OUTF); print " Done! "; exit; gnarlyhat
Thank you very much Dirk. I'm testing it now.
gnarlyhat
Dirk,
Thank you so much ![]() I was thinking it didn't work earlier but then realized that ping www.google.com will just keep on pinging non stop. I changed the commands to ping www.google.com -c 5 and it spat out the results right to my email. Thanks once again. This will save me a lot of time adding crons ![]() dirk
Glad to hear it's working on your system also.
Yes, pinging on Linuxnever stops...I have tested it on my local Windows PC where it stops after 3 pings. Hence I haven't noticed that this generates another problem if you run the script on a Linuxsystem.Dirk |

Thread Categories

![]() |
![]() |
Best of The Cache Home |
![]() |
![]() |
Search The Cache |
- Ajax
- Apache & mod_rewrite
- BlackHat SEO & Web Stuff
- C/++/#, Pascal etc.
- Database Stuff
- General & Non-Technical Discussion
- General programming, learning to code
- Javascript Discussions & Code
- Linux Related
- Mac, iPhone & OS-X Stuff
- Miscellaneous
- MS Windows Related
- PERL & Python Related
- PHP: Questions & Discussion
- PHP: Techniques, Classes & Examples
- Regular Expressions
- Uncategorized Threads