From: minima Date: Sun, 22 Apr 2001 23:43:36 +0000 (+0000) Subject: added run_cmd to the cron system to run any DXCluster command X-Git-Tag: R_1_47~11 X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=23cadfcd0cfe94855905545e2d68c8c0c8981f02;p=spider.git added run_cmd to the cron system to run any DXCluster command --- diff --git a/Changes b/Changes index 2fe35ab2..e8fa0690 100644 --- a/Changes +++ b/Changes @@ -3,6 +3,8 @@ localhost (or everything) and they telnet to localhost and login with their callsign. This means that they don't need a client anymore (for local access) 2. added input spot filtering. +3. Added run_cmd to DXCron which allows you to run any command on the system +from the crontab. (Dunno why I didn't do this before). 18Apr01======================================================================= 1. added Ian M0AZM's Java Client (SpiderConsole) 17Apr01======================================================================= diff --git a/html/cron.html b/html/cron.html index f3bfed6d..750f738a 100644 --- a/html/cron.html +++ b/html/cron.html @@ -22,7 +22,7 @@

-Last modified: Fri Jan 19 14:25:13 GMT 2001 +Last modified: Mon Apr 23 00:42:50 BST 2001

Introduction

@@ -74,9 +74,14 @@ Last modified: Fri Jan 19 14:25:13 GMT 2001 to another cluster and a set of routines are specially provided in the context of the DXCron package to make this easy. For example
+  start_connect('gb7tlh') unless connected('gb7tlh')
+    
+ this could have also been written: +
   start_connect('gb7tlh') if !connected('gb7tlh')
     
- will attempt to start a connection process to GB7TLH if it isn't + but the first method is more 'perlish', +

Either of these commands will attempt to start a connection process to GB7TLH if it isn't already locally connected.

There is absolutely no reason why you could not do something more complicated using information @@ -93,7 +98,7 @@ Last modified: Fri Jan 19 14:25:13 GMT 2001 # check every 10 minutes to see if gb7tlh is connected and if not # start a connect job going - 0,10,20,30,40,50 * * * * start_connect('gb7tlh') if !connected('gb7tlh') + 0,10,20,30,40,50 * * * * start_connect('gb7tlh') unless connected('gb7tlh') # at 03:15 on Sundays start a job called 'analyse.pl' which does something # or other. This starts a new process and runs to completion, be careful @@ -114,12 +119,25 @@ Last modified: Fri Jan 19 14:25:13 GMT 2001 23 * * * * rcmd('rcmd/gb7dxm disc/noinform G9TLH') if present_on('G9TLH', 'GB7DXM') + # some people like to do an hourly announce to say who they are. There is a + # slight complication about this because of the announce duplicate checking + # so you need to make each announce unique. I do this by adding a date and time + # stamp on the end + + 0 * * * * run_cmd('ann CLUSTER: GB7DJK JO02LQ at ' . cldate . ' ' . ztime) + It is important remember that these crontab routines execute in line with the main cluster code, so if you create a long, slow crontab command, it will impact on the speed and usability of the cluster as a whole. +

If you want to see what commands are being run and/or the syntax errors in the + crontab, then run: set/debug cron on the console and monitor the + debuging output (I use watchdbg in another window). + +

To set the debugging back to normal do: unset/debug cron. +

Standard Routines

As mentioned earlier, there are a small number of routines that are declared in DXCron @@ -127,40 +145,34 @@ Last modified: Fri Jan 19 14:25:13 GMT 2001 They are:- -

Caveats

- - There was an intermittent problem when running - (especially?) with the debugger on. Essentially you would - experience random crashes with nonsensical error messages returning from funny places on the stack (if - the debugger was on) or just core dumping (if it wasn't). - -

I believe this now to be fixed. YMMV, if so tell me about it! -

 

diff --git a/perl/DXCron.pm b/perl/DXCron.pm index 42dbe2a5..c88ad1d3 100644 --- a/perl/DXCron.pm +++ b/perl/DXCron.pm @@ -215,26 +215,16 @@ sub last_connect # disconnect a locally connected thing sub disconnect { - my $call = uc shift; - my $dxchan = DXChannel->get($call); - $dxchan->disconnect if $dxchan; + my $call = shift; + run_cmd("disconnect $call"); } # start a connect process off sub start_connect { - my $call = uc shift; - my $lccall = lc $call; - - if (Msg->conns($call)) { - dbg('cron', "Connect not started, outstanding connect to $call"); - return; - } - if (-e "$main::root/connect/$lccall") { - ExtMsg::start_connect($call, "$main::root/connect/$lccall"); - } else { - dbg('err', "Cannot find connect script for $lccall"); - } + my $call = shift; + # connecting is now done in one place - Yeah! + run_cmd("connect $call"); } # spawn any old job off @@ -281,5 +271,16 @@ sub rcmd # send it DXProt::addrcmd($DXProt::me, $call, $line); } + +sub run_cmd +{ + my $line = shift; + my @in = DXCommandmode::run_cmd($DXProt::me, $line); + dbg('cron', "cmd run: $line"); + for (@in) { + s/\s*$//og; + dbg('cron', "cmd out: $_"); + } +} 1; __END__ diff --git a/perl/DXProt.pm b/perl/DXProt.pm index eb65eb44..a6587209 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -179,6 +179,7 @@ sub init do "$main::data/hop_table.pl" if -e "$main::data/hop_table.pl"; confess $@ if $@; $me->{sort} = 'S'; # S for spider + $me->{priv} = 9; } #