#!/usr/bin/perl

# $debug++;

# @systems = ( 'bcf.uthscsa.edu' , 'alamo.uthscsa.edu');
@systems = ( 
    'gatekeeper.ranger.tacc.teragrid.org' ,
    'lonestar.tacc.teragrid.org' ,
    'alamo.biochemistry.uthscsa.edu', 
    );

@globusport = ( 
    2119, # gatekeeper.ranger.tacc.teragrid.org
    2119, # lonestar.tacc.teragrid.org
    2119, # alamo.biochemistry.uthscsa.edu
    );

use Net::Telnet;

$ultrascan = $ENV{'ULTRASCAN'} || die "$0: environment variable ULTRASCAN not set\n";

$exclude = `cat $ultrascan/etc/grid/tigre_exclude 2> /dev/null`;

open(OUT, ">$ultrascan/etc/grid/tigre_sysstat.new") || die "$0: can not open $ultrascan/etc/grid/tigre_sysstat.new for writing $!\n";

for($i = 0; $i < @systems; $i++) {
    next if $exclude =~ /$systems[$i]/;
    $t = new Net::Telnet(Timeout=>.5, Errmode=>'return', Port=>$globusport[$i]);
    $t->open($systems[$i] =~ /lonestar/ ? "gridftp1.ls4.tacc.utexas.edu" : $systems[$i]);
    print OUT "$systems[$i] ";
    if(!length($t->errmsg)) {
	print OUT 'up * *';
	print "$systems[$i] up\n" if $debug;
    } else {
	print OUT 'down * *';
	print "$systems[$i] down\n" if $debug;
    }
    $t->close();
    print OUT "\n";
}

close OUT;
open(FH, "$ultrascan/etc/grid/tigre_sysstat") || die "$0 can not open $ultrascan/etc/grid/tigre_sysstat $!\n";
flock(FH, 2) || print STDERR "$0: Warning can not flock $ultrascan/etc/grid/tigre_sysstat\n";
system("mv $ultrascan/etc/grid/tigre_sysstat.new $ultrascan/etc/grid/tigre_sysstat");
close(FH);
