--- projects/cms/source/host/ihost-perl/ihost.pl 2001/01/26 17:41:48 1.5 +++ projects/cms/source/host/ihost-perl/ihost.pl 2001/02/01 03:17:32 1.10 @@ -1,4 +1,4 @@ -#!/usr/local/bin/perl -w +#!/usr/bin/perl -w # ----------------------------------------------------------- # Perl i-scream Host. @@ -8,8 +8,8 @@ # methods as you see fit. # - pjm2@ukc.ac.uk # -# $Author: pjm2 $ -# $Id: ihost.pl,v 1.5 2001/01/26 17:41:48 pjm2 Exp $ +# $Author: tdb $ +# $Id: ihost.pl,v 1.10 2001/02/01 03:17:32 tdb Exp $ #------------------------------------------------------------ $| = 1; @@ -48,15 +48,25 @@ $seq_no = 1; $last_udp_time = time; $last_tcp_time = time; while (1) { - if (time >= $last_udp_time + $udp_update_time) { + my($time) = time; + if ($time >= $last_udp_time + $udp_update_time) { &send_udp_packet(); - $last_udp_time = time; + $last_udp_time = $time; } - if (time >= $last_tcp_time + $tcp_update_time) { + if ($time >= $last_tcp_time + $tcp_update_time) { &send_tcp_heartbeat(); - $last_tcp_time = time; + $last_tcp_time = $time; } - `sleep 1`; + my($next_udp) = $udp_update_time - $time + $last_udp_time; + my($next_tcp) = $tcp_update_time - $time + $last_tcp_time; + my($delay); + if ($next_udp < $next_tcp) { + $delay = $next_udp + } + else { + $delay = $next_tcp; + } + `sleep $delay`; } exit(0); @@ -88,7 +98,7 @@ sub tcp_configure() { chop $response; $last_modified = $response; - print "Config last modified: ". scalar localtime $last_modified . "\n"; + print "Config last modified: ". (scalar localtime $last_modified/1000) . "\n"; print $sock "FILELIST\n"; $response = <$sock>; @@ -107,7 +117,7 @@ sub tcp_configure() { chop $response; $tcp_update_time = $response; - print "UDP packet period: $udp_update_time seconds.\nTCP heartbeat period: $tcp_update_time.\n"; + print "UDP packet period: $udp_update_time seconds.\nTCP heartbeat period: $tcp_update_time seconds.\n"; print $sock "ENDCONFIG\n"; $response = <$sock>; @@ -170,8 +180,8 @@ sub send_udp_packet() { my($hostname) = hostname(); $hostname =~ s/\..*$//g; - my($domainname) = `cat /etc/resolv.conf`; - $domainname =~ s/domain\s*([^\s]*?)/$1/; + `cat /etc/resolv.conf` =~ /domain\s+([^\s]+)/; + my($domainname) = $1; my($machine_name) = "$hostname.$domainname"; my($ip) = inet_ntoa(scalar(gethostbyname($hostname)) || 'localhost'); @@ -191,6 +201,7 @@ sub send_udp_packet() { $packet{"packet.os.platform"} $packet{"packet.os.sysname"} $packet{"packet.os.version"} + $packet{"packet.os.uptime"} $packet{"packet.users.count"}