55 lines
1.5 KiB
Tcl
Executable File
55 lines
1.5 KiB
Tcl
Executable File
#!/usr/bin/tclsh
|
|
#----------------------------------------------------------
|
|
# A script for testing if the transfer of data files
|
|
# from instrument computers to AFS works
|
|
#
|
|
# Mark Koennecke, December 2015
|
|
#----------------------------------------------------------
|
|
|
|
set instlist [list amor boa dmc eiger focus hrpt mars \
|
|
morpheus narziss orion poldi rita2 sans sans2 tasp trics]
|
|
|
|
|
|
proc execCommand {command} {
|
|
puts stdout "Doing $command"
|
|
set status [catch {eval exec $command} msg]
|
|
if {$status != 0} {
|
|
puts stdout "ERROR: $msg "
|
|
}
|
|
}
|
|
#-----------------------------------------------------------
|
|
proc testTransfer {inst} {
|
|
set year [clock format [clock seconds] -format "%Y"]
|
|
set tmpfile /tmp/gaga.dat
|
|
execCommand "ssh ${inst}@${inst} cat data/${year}/DataNumber > $tmpfile"
|
|
set f [open $tmpfile r]
|
|
set num [string trim [gets $f]]
|
|
set hun [expr $num /1000]
|
|
set filename [format "/afs/psi.ch/project/sinqdata/%s/%s/%03d/%s%4dn%06d.*" \
|
|
$year $inst $hun $inst $year $num]
|
|
set status [catch {glob $filename} l]
|
|
if {$status == 0 && [llength $l] >= 1} {
|
|
puts stdout "$inst is good"
|
|
} else {
|
|
puts stdout "File $filename not fond, problem at $inst"
|
|
}
|
|
}
|
|
|
|
if {[llength $argv] < 1} {
|
|
puts stdout "usage:\n\ttesttransfer instname| all"
|
|
exit 1
|
|
}
|
|
|
|
set inst [lindex $argv]
|
|
|
|
if {[string compare $inst all] == 0} {
|
|
foreach inst $instlist {
|
|
testTransfer $inst
|
|
}
|
|
} else {
|
|
testTransfer $inst
|
|
}
|
|
|
|
puts stdout "Done"
|
|
|