#!/opt/tcl803/bin/sytcl
#
loadlibindex /opt/share/tcl/lib/ucodb/ucodb.tlib
global env
global sybmsg
set base metabase
set server KSUMMIT
set uname guest
set pass harmless
#
# go to the work directory
cd /u/de/data/xerox
set err [catch {set dbpipe1 [sybOpen $base $uname $pass $server]} res]
if {$err} {
puts stderr "NO SYBASE CONNECTION $res"
exit
}
#
set lfp [open /u/de/SanityCount.log a]
#
set now [clock seconds]
set datestr [clock format $now]
#
puts $lfp "********************** RUN ************************"
puts $lfp "DATE STR $datestr, TOY $now"
lassign $datestr wday mon day time zone year
puts $lfp "wday\t$wday\nday\t$day\nmon\t$mon\ntime\t$time\nzone\t$zone\nyear\t$year"
#
set sqt metabase.dbo.LastXerox
set sqlcmd "select stamp from metabase.dbo.LastXerox where server='KSUMMIT'"
doSQL 1
set lastupf [sybNext 1]
puts $lfp "LASTUPF $lastupf"
eval lassign $lastupf lmon lday lyr ltim
set lastup [clock scan "$lmon $lday $ltim $lyr"]
#
if {![file exists /u/de/data/xerox/Done]} {
puts $lfp "ERROR ERROR ERROR"
puts $lfp "No file u/de/data/xerox/Done detected."
puts $lfp "Implication is that scp failed."
close $lfp
exit
}
set lastxfer [file mtime /u/de/data/xerox/Done]
#
if {$lastxfer > $lastup} {
puts $lfp "Recent Transfer [clock format $lastxfer]"
puts $lfp "Older Update [clock format $lastup]"
puts $lfp "IMPOSSIBLE in normal operation"
} else {
puts $lfp "Recent Update [clock format $lastup]"
puts $lfp "Older Transfer [clock format $lastxfer]"
puts $lfp "Time to count the spoons."
}
#
set flist [glob -nocomplain *.dat]
set Ignore [list Mirrors MaskSlit SlitMap People Vendor FilterPerf Respondents SurveyAnswers fassists data_dict sw_issues foobar ]
set trouble ""
foreach f [lsort $flist] {
set fn [file tail $f]
set tn [file rootname $fn]
if {[lcontain $Ignore $tn]} {continue}
set res [exec wc $fn]
lassign $res lines words chars
set sqlcmd "select count(*) from $tn"
set sqt $tn
set err [catch {doSQL 1} res]
if {$err} {
puts $lfp "ERROR accessing table $tn:\n$res"
continue
}
set rec [sybNext 1]
if {$rec < $lines} {
lappend trouble "TABLE $tn s/b $lines is $rec records"
}
}
#
if {$trouble != ""} {
set uniq [clock seconds]
set tmf /tmp/UpdMail.$uniq
write_file $tmf "[join $trouble \n]"
system "/usr/ucb/Mail -s UPDATE_TROUBLE de@ucolick.org < $tmf"
puts $lfp "[join $trouble \n]"
puts $lfp "Sent mail to de."
} else {
puts $lfp "all files line cts match table rec counts"
}
#
close $lfp
#