Subj : [fidoperl] tracking @home part 2 To : All From : tony summerfelt Date : Wed Nov 08 2000 01:40 pm this is the expect version. no guarantee that this will run under win9x but windows NT or 2000 shouldn't have any problems. i find this a much 'cleaner' version. this is command line only, but you can add the tk stuff from the the last message if you want a gui version. unfortunately, THIS one doesn't run quite right under linux either. so a slightly modified proc is in the next message. i suppose i could have just added a test for os... set begin [clock seconds] set start [clock format [clock seconds] -format "%c"] set five_minutes 300 set newsession 1 set logname "wave.log" set logid "--" set up 0 proc getargs {} { global argc argv logname if {$argc!=1} { logmsg "Using default log file: $logname" after 3000 return } else { logmsg "Using log: $logname" } } proc quit {} { uptime exit } proc uptime {} { global begin start totaldown up newsession justloaded longestdown set uptime [duration 0] if {$up} {set begin [clock seconds]} set end [clock seconds] set elapsed [expr $end-$begin] set totaldown [expr $totaldown + $elapsed] set fb [open "totaldown" "w"] puts $fb $totaldown close $fb if {$elapsed > $longestdown} { set fb [open "longest" "w"] set longestdown $elapsed puts $fb $longestdown close $fb } set firstd [expr ($totaldown / 3600) / 24] set longd [expr ($longestdown / 3600) / 24] set firsth [expr ($totaldown / 3600) % 24] set longh [expr ($longestdown / 3600) % 24] if {$firsth<1} { set firsth "0" } if {$firsth>=1 && $firsth<10} { set firsth "0$firsth" } if {$longh<1} { set longh "0" } if {$longh>=1 && $longh<10} { set longh "0$longh" } set firstm [expr ($totaldown % 3600) / 60] set longm [expr ($longestdown % 3600) / 60] if {$firstm<1} { set firstm "0" } if {$longm<1} { set longm "0" } logmsg "longest downtime -- $longd\d $longh\h $longm\m" logmsg "total downtime -- $firstd\d $firsth\h $firstm\m" } proc duration { int_time } { global timetowait up lappend timeList "" if {[set d [expr ($int_time / 3600) / 24]] > 1} { lappend timeList "$d\d" } else { if {$d<1} { lappend timeList "0d" } } if {[set h [expr ($int_time / 3600) % 24]] > 1} { lappend timeList "$h\h" } else { if {$h<1} { lappend timeList "0h" } } if {[set m [expr ($int_time % 3600) / 60]] > 1} { if {$m<5 && $up==0} {set timetowait 1} if {$m>5 && $up} {set timetowait 5} lappend timeList "$m\m" } else { if {$m<1} { lappend timeList "0m" } } if {[set s [expr ($int_time % 3600) % 60]] > 1} { lappend timeList "$s\s" } else { if {$s<=1} { lappend timeList "0s" } } return [join $timeList] } proc logmsg {msg} { global logname logid newsession set timestamp [clock format [clock seconds] -format "%d %b %H:%M:%S"] set logfile [open $logname a+] if {$newsession==1} { puts $logfile "\n $timestamp $logid $msg" } else { puts $logfile " $timestamp $logid $msg" } close $logfile; set newsession 0; } proc notpinged {} { global up begin timetowait justloaded logmsg "wave is down" set lastcheck [clock format [clock seconds] -format "%c"] set lastcheck [lindex $lastcheck 3] if {$up} {set begin [clock seconds]} set up 0 } proc pinged {} { global up begin timetowait justloaded set lastcheck [clock format [clock seconds] -format "%c"] set lastcheck [lindex $lastcheck 3] if {$up==0} { logmsg "WAVE IS UP" uptime set up 1 } } proc tping {} { global timetowait five_minutes while {1} { spawn ping members.home.net set timeout 15 expect { "Request timed out" {notpinged} "Reply from" {pinged} default {notpinged} } sleep $five_minutes } } set begin [clock seconds] if {[file exists "totaldown"]} { set fb [open "totaldown" "r"] set totaldown [read $fb] } else {set totaldown 0} if {[file exists "longest"]} { set fb [open "longest" "r"] set longestdown [read $fb] } else {set longestdown 0} getargs tping -- *---------------------------------------- | |http://www.biosys.net/snowzone | |remove myspleen to email | *----------------------- -------------------------- eGroups Sponsor -------------------------~-~> eLerts It's Easy. It's Fun. Best of All, it's Free! http://click.egroups.com/1/9699/1/_/318106/_/973716142/ ---------------------------------------------------------------------_-> To Post a message, send it to: fidoperl@eGroups.com To Unsubscribe, send a blank message to: fidoperl-unsubscribe@eGroups.com --- * Origin: madcat <-> internet gateway (2:280/1126.99) .