#!/usr/bin/tclsh #[20:55:35] <@Randorr> btw cy, -diewelt -nz -telepolis :) set starttime [clock clicks] #puts "Starting..." set oldcd [pwd] cd /home/berlin/usr/scripts package require Rrd package require Gdtclft proc ReadStats {channel} { if [file exists /home/berlin/tmp/.htDAT/PEAK.$channel.dat] { set fh [open /home/berlin/tmp/.htDAT/PEAK.$channel.dat r] set Peak_Last [gets $fh]; if ![info exists Peak_Last] { set Peak_Last [clock seconds] } elseif {$Peak_Last<1 || $Peak_Last==""} { set Peak_Last [clock seconds] } set Peak [gets $fh] close $fh } return [list $Peak_Last $Peak] } set ::globalmintime 0 set ::globalcount 0 set ::globalpiccnt 0 namespace eval ::UpdatePNG:: { variable SearchFolder major minor build run array set Times { } proc gdtext {gd col font size angel x y text} { global color gd text $gd $color(bg) $font $size $angel [expr $x-3] [expr $y-3] $text gd text $gd $color(bg) $font $size $angel [expr $x+3] [expr $y-3] $text gd text $gd $color(bg) $font $size $angel [expr $x-3] [expr $y+3] $text gd text $gd $color(bg) $font $size $angel [expr $x+3] [expr $y+3] $text gd text $gd $color(bg) $font $size $angel [expr $x+2] [expr $y-2] $text gd text $gd $color(bg) $font $size $angel [expr $x-2] [expr $y+2] $text gd text $gd $color(bg) $font $size $angel [expr $x+2] [expr $y] $text gd text $gd $color(bg) $font $size $angel [expr $x-2] [expr $y] $text gd text $gd $color(bg) $font $size $angel [expr $x] [expr $y+2] $text gd text $gd $color(bg) $font $size $angel [expr $x] [expr $y-2] $text gd text $gd $color(black) $font $size $angel [expr $x+2] [expr $y+2] $text gd text $gd $color(white) $font $size $angel [expr $x-2] [expr $y-2] $text gd text $gd $color(bg) $font $size $angel [expr $x+1] [expr $y-1] $text gd text $gd $color(bg) $font $size $angel [expr $x-1] [expr $y+1] $text gd text $gd $color(realblack) $font $size $angel [expr $x+1] [expr $y+1] $text gd text $gd $color(realwhite) $font $size $angel [expr $x-1] [expr $y-1] $text gd text $gd $col $font $size $angel [expr $x] [expr $y] $text } set ::oldtime 1067521620 proc rrdCreateDB {{stime 1067521619}} { #puts "create newdb" set cnum [catch { if {0} { puts "Create ./TestBerlin.rrd" Rrd::create ./TestBerlin.rrd --step 1 --start $stime \ DS:TotalUser:GAUGE:60:U:U DS:TotalUserA:ABSOLUTE:60:U:U DS:TotalUserC:COUNTER:60:U:U DS:TotalUserD:DERIVE:60:U:U \ DS:TotalOp:GAUGE:60:U:U DS:TotalOpA:ABSOLUTE:60:U:U DS:TotalOpC:COUNTER:60:U:U DS:TotalOpD:DERIVE:60:U:U \ DS:TotalVoice:GAUGE:60:U:U DS:TotalVoiceA:ABSOLUTE:60:U:U DS:TotalVoiceC:COUNTER:60:U:U DS:TotalVoiceD:DERIVE:60:U:U \ RRA:AVERAGE:0.5:1:2160 RRA:AVERAGE:0.5:5:2016 RRA:AVERAGE:0.5:15:2880 RRA:AVERAGE:0.5:60:8760 RRA:AVERAGE:0.5:60:8760 \ RRA:LAST:0.5:1:2160 RRA:LAST:0.5:5:2016 RRA:LAST:0.5:15:2880 RRA:LAST:0.5:60:8760 RRA:LAST:0.5:300:87600 \ RRA:MIN:0.5:1:2160 RRA:MIN:0.5:5:2016 RRA:MIN:0.5:15:2880 RRA:MIN:0.5:60:8760 RRA:MIN:0.5:300:87600 \ RRA:MAX:0.5:1:2160 RRA:MAX:0.5:5:2016 RRA:MAX:0.5:15:2880 RRA:MAX:0.5:60:8760 RRA:MAX:0.5:300:87600 } if {![file exist ./Total.rrd] && 1 || 0} { puts "Create ./Total.rrd $stime" Rrd::create ./Total.rrd --step 60 --start $stime \ DS:Total:GAUGE:60:U:U DS:TotalD:DERIVE:60:U:U DS:TotalA:ABSOLUTE:60:U:U DS:TotalC:COUNTER:60:U:U \ RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.5:5:2016 RRA:AVERAGE:0.5:60:2976 RRA:AVERAGE:0.5:300:1752 RRA:AVERAGE:0.5:1440:3654 \ RRA:LAST:0.5:1:1440 RRA:LAST:0.5:5:2016 RRA:LAST:0.5:60:2976 RRA:LAST:0.5:300:1752 RRA:LAST:0.5:1440:3654 \ RRA:MIN:0.5:1:1440 RRA:MIN:0.5:5:2016 RRA:MIN:0.5:60:2976 RRA:MIN:0.5:300:1752 RRA:MIN:0.5:1440:3654 \ RRA:MAX:0.5:1:1440 RRA:MAX:0.5:5:2016 RRA:MAX:0.5:60:2976 RRA:MAX:0.5:300:1752 RRA:MAX:0.5:1440:3654 } if {![file exist ./OP.rrd] && 1 || 0} { puts "Create ./OP.rrd" Rrd::create ./OP.rrd --step 60 --start $stime \ DS:OP:GAUGE:60:U:U DS:OPD:DERIVE:60:U:U DS:OPA:ABSOLUTE:60:U:U DS:OPC:COUNTER:60:U:U \ RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.5:5:2016 RRA:AVERAGE:0.5:60:2976 RRA:AVERAGE:0.5:300:1752 RRA:AVERAGE:0.5:1440:3654 \ RRA:LAST:0.5:1:1440 RRA:LAST:0.5:5:2016 RRA:LAST:0.5:60:2976 RRA:LAST:0.5:300:1752 RRA:LAST:0.5:1440:3654 \ RRA:MIN:0.5:1:1440 RRA:MIN:0.5:5:2016 RRA:MIN:0.5:60:2976 RRA:MIN:0.5:300:1752 RRA:MIN:0.5:1440:3654 \ RRA:MAX:0.5:1:1440 RRA:MAX:0.5:5:2016 RRA:MAX:0.5:60:2976 RRA:MAX:0.5:300:1752 RRA:MAX:0.5:1440:3654 } if {![file exist ./Voice.rrd] && 1 || 0} { puts "Create ./Voice.rrd" Rrd::create ./Voice.rrd --step 60 --start $stime \ DS:Voice:GAUGE:60:U:U DS:VoiceD:DERIVE:60:U:U DS:VoiceA:ABSOLUTE:60:U:U DS:VoiceC:COUNTER:60:U:U \ RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.5:5:2016 RRA:AVERAGE:0.5:60:2976 RRA:AVERAGE:0.5:300:1752 RRA:AVERAGE:0.5:1440:3654 \ RRA:LAST:0.5:1:1440 RRA:LAST:0.5:5:2016 RRA:LAST:0.5:60:2976 RRA:LAST:0.5:300:1752 RRA:LAST:0.5:1440:3654 \ RRA:MIN:0.5:1:1440 RRA:MIN:0.5:5:2016 RRA:MIN:0.5:60:2976 RRA:MIN:0.5:300:1752 RRA:MIN:0.5:1440:3654 \ RRA:MAX:0.5:1:1440 RRA:MAX:0.5:5:2016 RRA:MAX:0.5:60:2976 RRA:MAX:0.5:300:1752 RRA:MAX:0.5:1440:3654 } if {![file exist ./User.rrd] && 1 || 0} { puts "Create ./User.rrd" Rrd::create ./User.rrd --step 60 --start $stime \ DS:User:GAUGE:60:U:U DS:UserD:DERIVE:60:U:U DS:UserA:ABSOLUTE:60:U:U DS:UserC:COUNTER:60:U:U \ RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.5:5:2016 RRA:AVERAGE:0.5:60:2976 RRA:AVERAGE:0.5:300:1752 RRA:AVERAGE:0.5:1440:3654 \ RRA:LAST:0.5:1:1440 RRA:LAST:0.5:5:2016 RRA:LAST:0.5:60:2976 RRA:LAST:0.5:300:1752 RRA:LAST:0.5:1440:3654 \ RRA:MIN:0.5:1:1440 RRA:MIN:0.5:5:2016 RRA:MIN:0.5:60:2976 RRA:MIN:0.5:300:1752 RRA:MIN:0.5:1440:3654 \ RRA:MAX:0.5:1:1440 RRA:MAX:0.5:5:2016 RRA:MAX:0.5:60:2976 RRA:MAX:0.5:300:1752 RRA:MAX:0.5:1440:3654 } if {![file exist ./Invis.rrd] && 1 || 0} { puts "Create ./Invis.rrd" Rrd::create ./Invis.rrd --step 60 --start $stime \ DS:Invis:GAUGE:60:U:U DS:InvisD:DERIVE:60:U:U DS:InvisA:ABSOLUTE:60:U:U DS:InvisC:COUNTER:60:U:U \ RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.5:5:2016 RRA:AVERAGE:0.5:60:2976 RRA:AVERAGE:0.5:300:1752 RRA:AVERAGE:0.5:1440:3654 \ RRA:LAST:0.5:1:1440 RRA:LAST:0.5:5:2016 RRA:LAST:0.5:60:2976 RRA:LAST:0.5:300:1752 RRA:LAST:0.5:1440:3654 \ RRA:MIN:0.5:1:1440 RRA:MIN:0.5:5:2016 RRA:MIN:0.5:60:2976 RRA:MIN:0.5:300:1752 RRA:MIN:0.5:1440:3654 \ RRA:MAX:0.5:1:1440 RRA:MAX:0.5:5:2016 RRA:MAX:0.5:60:2976 RRA:MAX:0.5:300:1752 RRA:MAX:0.5:1440:3654 } if {![file exist ./Ulist.rrd] && 1 || 0} { puts "Create ./Ulist.rrd" Rrd::create ./Ulist.rrd --step 60 --start $stime \ DS:Ulist:GAUGE:60:U:U DS:UlistD:DERIVE:60:U:U DS:UlistA:ABSOLUTE:60:U:U DS:UlistC:COUNTER:60:U:U \ RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.5:5:2016 RRA:AVERAGE:0.5:60:2976 RRA:AVERAGE:0.5:300:1752 RRA:AVERAGE:0.5:1440:3654 \ RRA:LAST:0.5:1:1440 RRA:LAST:0.5:5:2016 RRA:LAST:0.5:60:2976 RRA:LAST:0.5:300:1752 RRA:LAST:0.5:1440:3654 \ RRA:MIN:0.5:1:1440 RRA:MIN:0.5:5:2016 RRA:MIN:0.5:60:2976 RRA:MIN:0.5:300:1752 RRA:MIN:0.5:1440:3654 \ RRA:MAX:0.5:1:1440 RRA:MAX:0.5:5:2016 RRA:MAX:0.5:60:2976 RRA:MAX:0.5:300:1752 RRA:MAX:0.5:1440:3654 } if {![file exist ./LimitT.rrd] && 1 || 0} { puts "Create ./LimitT.rrd" Rrd::create ./LimitT.rrd --step 60 --start $stime \ DS:LimitT:GAUGE:60:U:U DS:LimitTD:DERIVE:60:U:U DS:LimitTA:ABSOLUTE:60:U:U DS:LimitTC:COUNTER:60:U:U \ RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.5:5:2016 RRA:AVERAGE:0.5:60:2976 RRA:AVERAGE:0.5:300:1752 RRA:AVERAGE:0.5:1440:3654 \ RRA:LAST:0.5:1:1440 RRA:LAST:0.5:5:2016 RRA:LAST:0.5:60:2976 RRA:LAST:0.5:300:1752 RRA:LAST:0.5:1440:3654 \ RRA:MIN:0.5:1:1440 RRA:MIN:0.5:5:2016 RRA:MIN:0.5:60:2976 RRA:MIN:0.5:300:1752 RRA:MIN:0.5:1440:3654 \ RRA:MAX:0.5:1:1440 RRA:MAX:0.5:5:2016 RRA:MAX:0.5:60:2976 RRA:MAX:0.5:300:1752 RRA:MAX:0.5:1440:3654 } if {![file exist ./Limit.rrd] && 1 || 0} { puts "Create ./Limit.rrd" Rrd::create ./Limit.rrd --step 60 --start $stime \ DS:Limit:GAUGE:60:U:U DS:LimitD:DERIVE:60:U:U DS:LimitDA:ABSOLUTE:60:U:U DS:LimitDC:COUNTER:60:U:U \ RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.5:5:2016 RRA:AVERAGE:0.5:60:2976 RRA:AVERAGE:0.5:300:1752 RRA:AVERAGE:0.5:1440:3654 \ RRA:LAST:0.5:1:1440 RRA:LAST:0.5:5:2016 RRA:LAST:0.5:60:2976 RRA:LAST:0.5:300:1752 RRA:LAST:0.5:1440:3654 \ RRA:MIN:0.5:1:1440 RRA:MIN:0.5:5:2016 RRA:MIN:0.5:60:2976 RRA:MIN:0.5:300:1752 RRA:MIN:0.5:1440:3654 \ RRA:MAX:0.5:1:1440 RRA:MAX:0.5:5:2016 RRA:MAX:0.5:60:2976 RRA:MAX:0.5:300:1752 RRA:MAX:0.5:1440:3654 } if {![file exist ./LimitL.rrd] && 1 || 0} { puts "Create ./LimitL.rrd" Rrd::create ./LimitL.rrd --step 60 --start $stime \ DS:LimitL:GAUGE:60:U:U DS:LimitLD:DERIVE:60:U:U DS:LimitLA:ABSOLUTE:60:U:U DS:LimitLC:COUNTER:60:U:U \ RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.5:5:2016 RRA:AVERAGE:0.5:60:2976 RRA:AVERAGE:0.5:300:1752 RRA:AVERAGE:0.5:1440:3654 \ RRA:LAST:0.5:1:1440 RRA:LAST:0.5:5:2016 RRA:LAST:0.5:60:2976 RRA:LAST:0.5:300:1752 RRA:LAST:0.5:1440:3654 \ RRA:MIN:0.5:1:1440 RRA:MIN:0.5:5:2016 RRA:MIN:0.5:60:2976 RRA:MIN:0.5:300:1752 RRA:MIN:0.5:1440:3654 \ RRA:MAX:0.5:1:1440 RRA:MAX:0.5:5:2016 RRA:MAX:0.5:60:2976 RRA:MAX:0.5:300:1752 RRA:MAX:0.5:1440:3654 } if {![file exist ./Klist.rrd] && 1 || 0} { puts "Create ./Klist.rrd" Rrd::create ./Klist.rrd --step 60 --start $stime \ DS:Klist:GAUGE:60:U:U DS:KlistD:DERIVE:60:U:U DS:KlistA:ABSOLUTE:60:U:U DS:KlistC:COUNTER:60:U:U \ RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.5:5:2016 RRA:AVERAGE:0.5:60:2976 RRA:AVERAGE:0.5:300:1752 RRA:AVERAGE:0.5:1440:3654 \ RRA:LAST:0.5:1:1440 RRA:LAST:0.5:5:2016 RRA:LAST:0.5:60:2976 RRA:LAST:0.5:300:1752 RRA:LAST:0.5:1440:3654 \ RRA:MIN:0.5:1:1440 RRA:MIN:0.5:5:2016 RRA:MIN:0.5:60:2976 RRA:MIN:0.5:300:1752 RRA:MIN:0.5:1440:3654 \ RRA:MAX:0.5:1:1440 RRA:MAX:0.5:5:2016 RRA:MAX:0.5:60:2976 RRA:MAX:0.5:300:1752 RRA:MAX:0.5:1440:3654 } if {![file exist ./Vlist.rrd] && 1 || 0} { puts "Create ./Vlist.rrd" Rrd::create ./Vlist.rrd --step 60 --start $stime \ DS:Vlist:GAUGE:60:U:U DS:VlistD:DERIVE:60:U:U DS:VlistA:ABSOLUTE:60:U:U DS:VlistC:COUNTER:60:U:U \ RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.5:5:2016 RRA:AVERAGE:0.5:60:2976 RRA:AVERAGE:0.5:300:1752 RRA:AVERAGE:0.5:1440:3654 \ RRA:LAST:0.5:1:1440 RRA:LAST:0.5:5:2016 RRA:LAST:0.5:60:2976 RRA:LAST:0.5:300:1752 RRA:LAST:0.5:1440:3654 \ RRA:MIN:0.5:1:1440 RRA:MIN:0.5:5:2016 RRA:MIN:0.5:60:2976 RRA:MIN:0.5:300:1752 RRA:MIN:0.5:1440:3654 \ RRA:MAX:0.5:1:1440 RRA:MAX:0.5:5:2016 RRA:MAX:0.5:60:2976 RRA:MAX:0.5:300:1752 RRA:MAX:0.5:1440:3654 } if {![file exist ./Netsplit.rrd] && 1 || 0} { puts "Create ./Netsplit.rrd" Rrd::create ./Netsplit.rrd --step 60 --start $stime \ DS:Netsplit:GAUGE:60:U:U DS:NetsplitD:DERIVE:60:U:U DS:NetsplitA:ABSOLUTE:60:U:U DS:NetsplitC:COUNTER:60:U:U \ RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.5:5:2016 RRA:AVERAGE:0.5:60:2976 RRA:AVERAGE:0.5:300:1752 RRA:AVERAGE:0.5:1440:3654 \ RRA:LAST:0.5:1:1440 RRA:LAST:0.5:5:2016 RRA:LAST:0.5:60:2976 RRA:LAST:0.5:300:1752 RRA:LAST:0.5:1440:3654 \ RRA:MIN:0.5:1:1440 RRA:MIN:0.5:5:2016 RRA:MIN:0.5:60:2976 RRA:MIN:0.5:300:1752 RRA:MIN:0.5:1440:3654 \ RRA:MAX:0.5:1:1440 RRA:MAX:0.5:5:2016 RRA:MAX:0.5:60:2976 RRA:MAX:0.5:300:1752 RRA:MAX:0.5:1440:3654 } if {![file exist ./Netjoin.rrd] && 1 || 0} { puts "Create ./Netjoin.rrd" Rrd::create ./Netjoin.rrd --step 60 --start $stime \ DS:Netjoin:GAUGE:60:U:U DS:NetjoinD:DERIVE:60:U:U DS:NetjoinA:ABSOLUTE:60:U:U DS:NetjoinC:COUNTER:60:U:U \ RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.5:5:2016 RRA:AVERAGE:0.5:60:2976 RRA:AVERAGE:0.5:300:1752 RRA:AVERAGE:0.5:1440:3654 \ RRA:LAST:0.5:1:1440 RRA:LAST:0.5:5:2016 RRA:LAST:0.5:60:2976 RRA:LAST:0.5:300:1752 RRA:LAST:0.5:1440:3654 \ RRA:MIN:0.5:1:1440 RRA:MIN:0.5:5:2016 RRA:MIN:0.5:60:2976 RRA:MIN:0.5:300:1752 RRA:MIN:0.5:1440:3654 \ RRA:MAX:0.5:1:1440 RRA:MAX:0.5:5:2016 RRA:MAX:0.5:60:2976 RRA:MAX:0.5:300:1752 RRA:MAX:0.5:1440:3654 } if {![file exist ./WPM.rrd] && 1 || 0} { puts "Create ./WPM.rrd" Rrd::create ./WPM.rrd --step 60 --start $stime \ DS:WPM:GAUGE:60:U:U \ RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.5:5:2016 RRA:AVERAGE:0.5:60:2976 RRA:AVERAGE:0.5:300:1752 RRA:AVERAGE:0.5:1440:3654 \ RRA:LAST:0.5:1:1440 RRA:LAST:0.5:5:2016 RRA:LAST:0.5:60:2976 RRA:LAST:0.5:300:1752 RRA:LAST:0.5:1440:3654 \ RRA:MIN:0.5:1:1440 RRA:MIN:0.5:5:2016 RRA:MIN:0.5:60:2976 RRA:MIN:0.5:300:1752 RRA:MIN:0.5:1440:3654 \ RRA:MAX:0.5:1:1440 RRA:MAX:0.5:5:2016 RRA:MAX:0.5:60:2976 RRA:MAX:0.5:300:1752 RRA:MAX:0.5:1440:3654 } if {![file exist ./LPM.rrd] && 1 || 0} { puts "Create ./LPM.rrd" Rrd::create ./LPM.rrd --step 60 --start $stime \ DS:LPM:GAUGE:60:U:U \ RRA:AVERAGE:0.5:1:1440 RRA:AVERAGE:0.5:5:2016 RRA:AVERAGE:0.5:60:2976 RRA:AVERAGE:0.5:300:1752 RRA:AVERAGE:0.5:1440:3654 \ RRA:LAST:0.5:1:1440 RRA:LAST:0.5:5:2016 RRA:LAST:0.5:60:2976 RRA:LAST:0.5:300:1752 RRA:LAST:0.5:1440:3654 \ RRA:MIN:0.5:1:1440 RRA:MIN:0.5:5:2016 RRA:MIN:0.5:60:2976 RRA:MIN:0.5:300:1752 RRA:MIN:0.5:1440:3654 \ RRA:MAX:0.5:1:1440 RRA:MAX:0.5:5:2016 RRA:MAX:0.5:60:2976 RRA:MAX:0.5:300:1752 RRA:MAX:0.5:1440:3654 } } cmsg] #puts "done $cnum : $cmsg" } proc rrdDayFile {file} { #puts "check file" if ![file exi ./Total.rrd] { #puts "file not exist"; return } { #puts "file exists" } #puts " execute " if {$file!=""} { if [file exists $file] { set getdate [split $file .] set tDay [string trimleft [lindex $getdate 4] 0]; set tMonth [expr [string trimleft [lindex $getdate 3] 0]+1]; set tYear [string trimleft [lindex $getdate 2] 0]; set Date "$tMonth/$tDay/$tYear" unset tDay tMonth tYear; set fh [open $file r] #puts "read $file" while {![eof $fh]} { set line [gets $fh] if {$line!="" && $line!=[list]} { #Rrd::update rrdfile zeit:wert set timestamp [clock scan "$Date [lindex $line 0]:[lindex $line 1]"] #puts "set timestamp $timestamp" #set timestamp 978303606 if {$timestamp>$::globalmintime} { set cnum 0; set cmsg ""; set Total [lindex $line 2]; set OP [lindex $line 3]; set Voice [lindex $line 4]; set User [lindex $line 5]; set Invis [lindex $line 6]; set Ulist [lindex $line 7]; set LimitT [lindex $line 8]; set Limit [lindex $line 9]; set LimitL [lindex $line 10]; set Klist [lindex $line 11]; set Vlist [lindex $line 12]; set Netsplit [lindex $line 13]; set Netjoin [lindex $line 14]; set WPM [lindex $line 15]; set LPM [lindex $line 16]; #puts "update ./Total.rrd $timestamp:$Total" if {$cnum==0} { set cmod Total; set cnum [catch { Rrd::update ./Total.rrd $timestamp:$Total:$Total:$Total:$Total} cmsg] if {$cnum==0} { set cmod OP; set cnum [catch { Rrd::update ./OP.rrd $timestamp:$OP:$OP:$OP:$OP} cmsg] if {$cnum==0} { set cmod Voice; set cnum [catch { Rrd::update ./Voice.rrd $timestamp:$Voice:$Voice:$Voice:$Voice} cmsg] if {$cnum==0} { set cmod User; set cnum [catch { Rrd::update ./User.rrd $timestamp:$User:$User:$User:$User} cmsg] if {$cnum==0} { set cmod Invis; set cnum [catch { Rrd::update ./Invis.rrd $timestamp:$Invis:$Invis:$Invis:$Invis} cmsg] if {$cnum==0} { set cmod Ulist; set cnum [catch { Rrd::update ./Ulist.rrd $timestamp:$Ulist:$Ulist:$Ulist:$Ulist} cmsg] if {$cnum==0} { set cmod LimitT; set cnum [catch { Rrd::update ./LimitT.rrd $timestamp:$LimitT:$LimitT:$LimitT:$LimitT} cmsg] if {$cnum==0} { set cmod Limit; set cnum [catch { Rrd::update ./Limit.rrd $timestamp:$Limit:$Limit:$Limit:$Limit} cmsg] if {$cnum==0} { set cmod LimitL; set cnum [catch { Rrd::update ./LimitL.rrd $timestamp:$LimitL:$LimitL:$LimitL:$LimitL} cmsg] if {$cnum==0} { set cmod Klist; set cnum [catch { Rrd::update ./Klist.rrd $timestamp:$Klist:$Klist:$Klist:$Klist} cmsg] if {$cnum==0} { set cmod Vlist; set cnum [catch { Rrd::update ./Vlist.rrd $timestamp:$Vlist:$Vlist:$Vlist:$Vlist} cmsg] if {$cnum==0} { set cmod Netsplit; set cnum [catch { Rrd::update ./Netsplit.rrd $timestamp:$Netsplit:$Netsplit:$Netsplit:$Netsplit} cmsg] if {$cnum==0} { set cmod Netjoin; set cnum [catch { Rrd::update ./Netjoin.rrd $timestamp:$Netjoin:$Netjoin:$Netjoin:$Netjoin} cmsg] if {$cnum==0} { set cmod WPM; set cnum [catch { Rrd::update ./WPM.rrd $timestamp:$WPM} cmsg] if {$cnum==0} { set cmod LPM; set cnum [catch { Rrd::update ./LPM.rrd $timestamp:$LPM} cmsg] if {$cnum==0} { } } } } } } } } } } } } } } } } if {$cnum==-1} {set cnum 0} #puts " Update RRD done" if {$cnum!=0} { if {$timestamp>$::globalmintime} {set ::globalmintime $timestamp} if {[regexp {^RRD.*Error.*illegal.*attempt.*to.*update.*using.*time (.+) when.*last.*update.*time.*is (.+) \(minimum (.*) ste.*} $cmsg temp atime mtime min]} { #regexp {^.*illegal.*attempt.*to.*update.*using.*time (.+) when.*last.*update.*time.*is (.+) \(minimum (.*) ste.*} $text temp atime mtime min set ::globalmintime $mtime #puts "regexp match" } { puts "$cmod update $timestamp catch $cnum result $cmsg" } } { if {$cmsg!=""} { puts -nonewline " cnum 0: $cmsg" } { #puts -nonewline " UPD" } } if ![info exists ::oldtime] {set ::oldtime $timestamp} } { #puts -nonewline "to old " } #puts "$timestamp: $line" } } close $fh #puts "file $file done - ::oldtime $::oldtime - lasttime $timestamp" } } incr ::globalcount if {$::globalcount<=7} return set ::globalcount 0 #rrdDayFileGraph $timestamp } proc rrdDayFileGraph {timestamp} { #DEF:TotalC=Total.rrd:TotalC:AVERAGE DEF:MaxC=Total.rrd:TotalC:MAX DEF:MinC=Total.rrd:TotalC:MIN DEF:LastC=Total.rrd:TotalC:LAST \ #DEF:TotalD=Total.rrd:TotalD:AVERAGE DEF:MaxD=Total.rrd:TotalD:MAX DEF:MinD=Total.rrd:TotalD:MIN DEF:LastD=Total.rrd:TotalD:LAST \ #DEF:TotalA=Total.rrd:TotalA:AVERAGE DEF:MaxA=Total.rrd:TotalA:MAX DEF:MinA=Total.rrd:TotalA:MIN DEF:LastA=Total.rrd:TotalA:LAST \ #LINE1:MinA#00ff00:"Min" LINE1:MaxA#ff0000:"Max" LINE1:LastA#00ffff:"Last" LINE1:TotalA#0000ff:"Total" \ # #puts " $timestamp<=$::globalmintime " if {$timestamp<=$::globalmintime} {return} ; # normal <= !!! #puts "create PNG files" # -s [expr [clock sec]-604800*4] -e [clock sec] -w 1024 -h 400 # AREA:Min#00ffff \ #Rrd::graph /home/berlin/public_html/rrd/TotalA.png -A -w 900 -h 400 -s -1week \ #DEF:Total=Total.rrd:TotalA:AVERAGE DEF:Max=Total.rrd:TotalA:MAX DEF:Min=Total.rrd:TotalA:MIN DEF:Last=Total.rrd:TotalA:LAST \ #LINE1:Max#ff0000:Max LINE1:Total#cccc00:Avg LINE1:Min#00ff00:Min LINE1:Last#00AAAA:Cur #Rrd::graph /home/berlin/public_html/rrd/TotalC.png -A -w 900 -h 400 -s -1week \ #DEF:Total=Total.rrd:TotalC:AVERAGE DEF:Max=Total.rrd:TotalC:MAX DEF:Min=Total.rrd:TotalC:MIN DEF:Last=Total.rrd:TotalC:LAST \ #LINE1:Min#00ff00:Min LINE1:Max#ff0000:Max LINE1:Last#00ffff:Last LINE1:Total#0000ff:Total incr ::globalpiccnt puts -nonewline " PIC$::globalpiccnt" proc GraphGauge {name {type "Day"} {stime ""} {etime ""}} { puts -nonewline " GAUGE $name $type" ; flush stdout if {$stime!=""} {set stime "-s $stime"} {set stime "-s -1day"} if {$etime!=""} {set etime "-e $etime"} {set etime "-e now"} set mintxt "Min %8.4lg"; set avgtxt "Avg %8.4lg"; set curtxt "Cur %8.4lg"; set maxtxt "Max %8.4lg" set num [catch { exec /usr/local/rrdtool/bin/rrdtool graph \ /home/berlin/public_html/rrd/${name}_${type}.png -A -w 900 -h 300 $stime $etime \ DEF:Min1=${name}.rrd:${name}:MIN DEF:Avg1=${name}.rrd:${name}:AVERAGE DEF:Cur1=${name}.rrd:${name}:LAST DEF:Max1=${name}.rrd:${name}:MAX \ CDEF:Min=Min1 CDEF:Avg=Avg1 CDEF:Cur=Cur1 CDEF:Max=Max1 \ LINE1:Avg#000000:Avg GPRINT:Avg:MIN:$mintxt GPRINT:Avg:AVERAGE:$avgtxt GPRINT:Avg:MAX:$maxtxt GPRINT:Avg:LAST:$curtxt COMMENT:\\l #LINE1:Min#dd0000:Min GPRINT:Min:MIN:$mintxt GPRINT:Min:AVERAGE:$avgtxt GPRINT:Min:LAST:$curtxt GPRINT:Min:MAX:$maxtxt COMMENT:\\l \ #LINE1:Cur#00dd00:Cur GPRINT:Cur:MIN:$mintxt GPRINT:Cur:AVERAGE:$avgtxt GPRINT:Cur:LAST:$curtxt GPRINT:Cur:MAX:$maxtxt COMMENT:\\l \ #LINE1:Max#0000dd:Max GPRINT:Max:MIN:$mintxt GPRINT:Max:AVERAGE:$avgtxt GPRINT:Max:LAST:$curtxt GPRINT:Max:MAX:$maxtxt COMMENT:\\l \ #LINE1:Avg#000000 } msg]; if {$num!=0} {puts " $num: $msg"} } # proc GraphAbsolute {name {type "Day"} {stime ""} {etime ""}} { puts -nonewline " ABSOLUTE $name $type" ; flush stdout if {$stime!=""} {set stime "-s $stime"} {set stime "-s -1day"} if {$etime!=""} {set etime "-e $etime"} {set etime "-e now"} set mintxt "Min %8.4lg"; set avgtxt "Avg %8.4lg"; set curtxt "Cur %8.4lg"; set maxtxt "Max %8.4lg" set num [catch { exec /usr/local/rrdtool/bin/rrdtool graph \ /home/berlin/public_html/rrd/${name}A_${type}.png -A -w 900 -h 300 $stime $etime \ DEF:Min1=${name}.rrd:${name}A:MIN DEF:Avg1=${name}.rrd:${name}A:AVERAGE DEF:Cur1=${name}.rrd:${name}A:LAST DEF:Max1=${name}.rrd:${name}A:MAX \ CDEF:Min=Min1,60,* CDEF:Avg=Avg1,60,* CDEF:Cur=Cur1,60,* CDEF:Max=Max1,60,* \ LINE1:Avg#000000:Avg GPRINT:Avg:MIN:$mintxt GPRINT:Avg:AVERAGE:$avgtxt GPRINT:Avg:MAX:$maxtxt GPRINT:Avg:LAST:$curtxt COMMENT:\\l #LINE1:Min#dd0000:Min GPRINT:Min:MIN:$mintxt GPRINT:Min:AVERAGE:$avgtxt GPRINT:Min:LAST:$curtxt GPRINT:Min:MAX:$maxtxt COMMENT:\\l \ #LINE1:Cur#00dd00:Cur GPRINT:Cur:MIN:$mintxt GPRINT:Cur:AVERAGE:$avgtxt GPRINT:Cur:LAST:$curtxt GPRINT:Cur:MAX:$maxtxt COMMENT:\\l \ #LINE1:Max#0000dd:Max GPRINT:Max:MIN:$mintxt GPRINT:Max:AVERAGE:$avgtxt GPRINT:Max:LAST:$curtxt GPRINT:Max:MAX:$maxtxt COMMENT:\\l \ #LINE1:Avg#000000 } msg] if {$num!=0} {puts " $num: $msg"} flush stdout } # proc GraphDerive {name {type "Day"} {stime ""} {etime ""}} { puts -nonewline " DERIVE $name $type" ; flush stdout if {$stime!=""} {set stime "-s $stime"} {set stime "-s -1day"} if {$etime!=""} {set etime "-e $etime"} {set etime "-e now"} set mintxt "Min %8.4lg"; set avgtxt "Avg %8.4lg"; set curtxt "Cur %8.4lg"; set maxtxt "Max %8.4lg" set num [catch { exec /usr/local/rrdtool/bin/rrdtool graph \ /home/berlin/public_html/rrd/${name}D_${type}.png -A -w 900 -h 300 $stime $etime \ DEF:Min1=${name}.rrd:${name}D:MIN DEF:Avg1=${name}.rrd:${name}D:AVERAGE DEF:Cur1=${name}.rrd:${name}D:LAST DEF:Max1=${name}.rrd:${name}D:MAX \ CDEF:Min=Min1,60,* CDEF:Avg=Avg1,60,* CDEF:Cur=Cur1,60,* CDEF:Max=Max1,60,* \ LINE1:Avg#000000:Avg GPRINT:Avg:MIN:$mintxt GPRINT:Avg:AVERAGE:$avgtxt GPRINT:Avg:MAX:$maxtxt GPRINT:Avg:LAST:$curtxt COMMENT:\\l #LINE1:Min#dd0000:Min GPRINT:Min:MIN:$mintxt GPRINT:Min:AVERAGE:$avgtxt GPRINT:Min:LAST:$curtxt GPRINT:Min:MAX:$maxtxt COMMENT:\\l \ #LINE1:Cur#00dd00:Cur GPRINT:Cur:MIN:$mintxt GPRINT:Cur:AVERAGE:$avgtxt GPRINT:Cur:LAST:$curtxt GPRINT:Cur:MAX:$maxtxt COMMENT:\\l \ #LINE1:Max#0000dd:Max GPRINT:Max:MIN:$mintxt GPRINT:Max:AVERAGE:$avgtxt GPRINT:Max:LAST:$curtxt GPRINT:Max:MAX:$maxtxt COMMENT:\\l \ #LINE1:Avg#000000 } msg] if {$num!=0} {puts " $num: $msg"} flush stdout } # proc GraphCounter {name {type "Day"} {stime ""} {etime ""}} { puts -nonewline " COUNTER $name $type" ; flush stdout if {$stime!=""} {set stime "-s $stime"} {set stime "-s -1day"} if {$etime!=""} {set etime "-e $etime"} {set etime "-e now"} set mintxt "Min %8.4lg"; set avgtxt "Avg %8.4lg"; set curtxt "Cur %8.4lg"; set maxtxt "Max %8.4lg" # CDEF:Min=Min1,60,* CDEF:Avg=Avg1,60,* CDEF:Cur=Cur1,60,* CDEF:Max=Max1,60,* set num [catch { exec /usr/local/rrdtool/bin/rrdtool graph \ /home/berlin/public_html/rrd/${name}C_${type}.png -A -w 900 -h 300 $stime $etime \ DEF:Min1=${name}.rrd:${name}C:MIN DEF:Avg1=${name}.rrd:${name}C:AVERAGE DEF:Cur1=${name}.rrd:${name}C:LAST DEF:Max1=${name}.rrd:${name}C:MAX \ CDEF:Min=Min1 CDEF:Avg=Avg1 CDEF:Cur=Cur1 CDEF:Max=Max1 \ LINE1:Avg#000000:Avg GPRINT:Avg:MIN:$mintxt GPRINT:Avg:AVERAGE:$avgtxt GPRINT:Avg:MAX:$maxtxt GPRINT:Avg:LAST:$curtxt COMMENT:\\l #LINE1:Min#dd0000:Min GPRINT:Min:MIN:$mintxt GPRINT:Min:AVERAGE:$avgtxt GPRINT:Min:LAST:$curtxt GPRINT:Min:MAX:$maxtxt COMMENT:\\l \ #LINE1:Cur#00dd00:Cur GPRINT:Cur:MIN:$mintxt GPRINT:Cur:AVERAGE:$avgtxt GPRINT:Cur:LAST:$curtxt GPRINT:Cur:MAX:$maxtxt COMMENT:\\l \ #LINE1:Max#0000dd:Max GPRINT:Max:MIN:$mintxt GPRINT:Max:AVERAGE:$avgtxt GPRINT:Max:LAST:$curtxt GPRINT:Max:MAX:$maxtxt COMMENT:\\l \ #LINE1:Avg#000000 } msg] if {$num!=0} {puts " $num: $msg"} flush stdout } # #puts " exec" #set num [catch { #exec /usr/local/rrdtool/bin/rrdtool graph \ #/home/berlin/public_html/rrd/TotalD_Hour.png -A -w 900 -h 400 -s -1day \ #DEF:Min1=Total.rrd:TotalD:MIN DEF:Total1=Total.rrd:TotalD:AVERAGE DEF:Last1=Total.rrd:TotalD:LAST DEF:Max1=Total.rrd:TotalD:MAX \ #CDEF:Min=Min1,60,* CDEF:Total=Total1,60,* CDEF:Last=Last1,60,* CDEF:Max=Max1,60,* \ #LINE1:Min#ff0000:Min GPRINT:Min:MIN:Min%8.4lg GPRINT:Min:AVERAGE:Avg%8.4lg GPRINT:Min:LAST:Cur%8.4lg GPRINT:Min:MAX:Max%8.4lg COMMENT:\\l \ #LINE1:Total#00ff00:Avg GPRINT:Total:MIN:Min%8.4lg GPRINT:Total:AVERAGE:Avg%8.4lg GPRINT:Total:LAST:Cur%8.4lg GPRINT:Total:MAX:Max%8.4lg COMMENT:\\l \ #LINE1:Last#00cccc:Cur GPRINT:Last:MIN:Min%8.4lg GPRINT:Last:AVERAGE:Avg%8.4lg GPRINT:Last:LAST:Cur%8.4lg GPRINT:Last:MAX:Max%8.4lg COMMENT:\\l \ #LINE1:Max#0000ff:Max GPRINT:Max:MIN:Min%8.4lg GPRINT:Max:AVERAGE:Avg%8.4lg GPRINT:Max:LAST:Cur%8.4lg GPRINT:Max:MAX:Max%8.4lg COMMENT:\\l #} msg] #puts " done $num: $msg" proc GraphGauge2 {name data1 data2 {type "Day"} {stime ""} {etime ""}} { puts -nonewline " GAUGE $name $type" ; flush stdout if {$stime!=""} {set stime "-s $stime"} {set stime "-s -1day"} if {$etime!=""} {set etime "-e $etime"} {set etime "-e now"} set mintxt "Min %8.4lg"; set avgtxt "Avg %8.4lg"; set curtxt "Cur %8.4lg"; set maxtxt "Max %8.4lg" set num [catch { exec /usr/local/rrdtool/bin/rrdtool graph \ /home/berlin/public_html/rrd/${name}_${type}.png -A -w 900 -h 300 $stime $etime \ DEF:Min1=${data1}.rrd:${data1}:MIN DEF:Avg1=${data1}.rrd:${data1}:AVERAGE DEF:Cur1=${data1}.rrd:${data1}:LAST DEF:Max1=${data1}.rrd:${data1}:MAX \ DEF:Min2=${data2}.rrd:${data2}:MIN DEF:Avg2=${data2}.rrd:${data2}:AVERAGE DEF:Cur2=${data2}.rrd:${data2}:LAST DEF:Max2=${data2}.rrd:${data2}:MAX \ LINE1:Avg1#aa0000:$data1 GPRINT:Avg1:MIN:$mintxt GPRINT:Avg1:AVERAGE:$avgtxt GPRINT:Avg1:MAX:$maxtxt GPRINT:Avg1:LAST:$curtxt COMMENT:\\l \ LINE1:Avg2#0000aa:$data2 GPRINT:Avg2:MIN:$mintxt GPRINT:Avg2:AVERAGE:$avgtxt GPRINT:Avg2:MAX:$maxtxt GPRINT:Avg2:LAST:$curtxt COMMENT:\\l \ LINE1:Avg1#aa0000 #LINE1:Min#dd0000:Min GPRINT:Min:MIN:$mintxt GPRINT:Min:AVERAGE:$avgtxt GPRINT:Min:LAST:$curtxt GPRINT:Min:MAX:$maxtxt COMMENT:\\l \ #LINE1:Cur#00dd00:Cur GPRINT:Cur:MIN:$mintxt GPRINT:Cur:AVERAGE:$avgtxt GPRINT:Cur:LAST:$curtxt GPRINT:Cur:MAX:$maxtxt COMMENT:\\l \ #LINE1:Max#0000dd:Max GPRINT:Max:MIN:$mintxt GPRINT:Max:AVERAGE:$avgtxt GPRINT:Max:LAST:$curtxt GPRINT:Max:MAX:$maxtxt COMMENT:\\l \ #LINE1:Avg#000000 } msg]; if {$num!=0} {puts " $num: $msg"} } proc GraphGaugeNet {name data1 data2 {type "Day"} {stime ""} {etime ""}} { puts -nonewline " GAUGE $name $type" ; flush stdout if {$stime!=""} {set stime "-s $stime"} {set stime "-s -1day"} if {$etime!=""} {set etime "-e $etime"} {set etime "-e now"} set text "Lost User in Netsplit's und Netjoin's" set text1 "User verloren (-1000) " set text2 "User wieder gekommen " set text3 "User total verloren " set mintxt "Min %8.4lg"; set avgtxt "Avg %8.4lg"; set curtxt "Cur %8.4lg"; set maxtxt "Max %8.4lg" set num [catch { exec /usr/local/rrdtool/bin/rrdtool graph \ /home/berlin/public_html/rrd/${name}_${type}.png -A -w 900 -h 300 $stime $etime -t $text \ DEF:Min1=${data1}.rrd:${data1}:MIN DEF:Avg1=${data1}.rrd:${data1}:AVERAGE DEF:Cur1=${data1}.rrd:${data1}:LAST DEF:Max1=${data1}.rrd:${data1}:MAX \ DEF:Min2=${data2}.rrd:${data2}:MIN DEF:Avg2=${data2}.rrd:${data2}:AVERAGE DEF:Cur2=${data2}.rrd:${data2}:LAST DEF:Max2=${data2}.rrd:${data2}:MAX \ CDEF:Avg3=Avg1,Avg2,- CDEF:Avg1d=Avg1,1000,- \ LINE1:Avg1d#aa0000:$text1 GPRINT:Avg1:MIN:$mintxt GPRINT:Avg1:AVERAGE:$avgtxt GPRINT:Avg1:MAX:$maxtxt GPRINT:Avg1:LAST:$curtxt COMMENT:\\l \ LINE1:Avg2#0000aa:$text2 GPRINT:Avg2:MIN:$mintxt GPRINT:Avg2:AVERAGE:$avgtxt GPRINT:Avg2:MAX:$maxtxt GPRINT:Avg2:LAST:$curtxt COMMENT:\\l \ LINE1:Avg3#000000:$text3 GPRINT:Avg3:MIN:$mintxt GPRINT:Avg3:AVERAGE:$avgtxt GPRINT:Avg3:MAX:$maxtxt GPRINT:Avg3:LAST:$curtxt COMMENT:\\l \ LINE1:Avg2#0000aa LINE1:Avg1d#aa0000 #LINE1:Min#dd0000:Min GPRINT:Min:MIN:$mintxt GPRINT:Min:AVERAGE:$avgtxt GPRINT:Min:LAST:$curtxt GPRINT:Min:MAX:$maxtxt COMMENT:\\l \ #LINE1:Cur#00dd00:Cur GPRINT:Cur:MIN:$mintxt GPRINT:Cur:AVERAGE:$avgtxt GPRINT:Cur:LAST:$curtxt GPRINT:Cur:MAX:$maxtxt COMMENT:\\l \ #LINE1:Max#0000dd:Max GPRINT:Max:MIN:$mintxt GPRINT:Max:AVERAGE:$avgtxt GPRINT:Max:LAST:$curtxt GPRINT:Max:MAX:$maxtxt COMMENT:\\l \ #LINE1:Avg#000000 } msg]; if {$num!=0} {puts " $num: $msg"} } proc GraphGauge2A {name data1 data2 {type "Day"} {stime ""} {etime ""}} { puts -nonewline " GAUGE $name $type" ; flush stdout if {$stime!=""} {set stime "-s $stime"} {set stime "-s -1day"} if {$etime!=""} {set etime "-e $etime"} {set etime "-e now"} set text "Aktivität im Channel" set text1 "Words / Minute " set text2 "Lines / Minute " set mintxt "Min %8.4lg"; set avgtxt "Avg %8.4lg"; set curtxt "Cur %8.4lg"; set maxtxt "Max %8.4lg" set num [catch { exec /usr/local/rrdtool/bin/rrdtool graph \ /home/berlin/public_html/rrd/${name}_${type}.png -A -w 900 -h 300 $stime $etime -t $text \ DEF:Min1=${data1}.rrd:${data1}:MIN DEF:Avg1=${data1}.rrd:${data1}:AVERAGE DEF:Cur1=${data1}.rrd:${data1}:LAST DEF:Max1=${data1}.rrd:${data1}:MAX \ DEF:Min2=${data2}.rrd:${data2}:MIN DEF:Avg2=${data2}.rrd:${data2}:AVERAGE DEF:Cur2=${data2}.rrd:${data2}:LAST DEF:Max2=${data2}.rrd:${data2}:MAX \ AREA:Avg1#aa0000:$text1 GPRINT:Avg1:MIN:$mintxt GPRINT:Avg1:AVERAGE:$avgtxt GPRINT:Avg1:MAX:$maxtxt GPRINT:Avg1:LAST:$curtxt COMMENT:\\l \ AREA:Avg2#0000aa:$text2 GPRINT:Avg2:MIN:$mintxt GPRINT:Avg2:AVERAGE:$avgtxt GPRINT:Avg2:MAX:$maxtxt GPRINT:Avg2:LAST:$curtxt COMMENT:\\l \ LINE1:Avg1#aa0000 #LINE1:Min#dd0000:Min GPRINT:Min:MIN:$mintxt GPRINT:Min:AVERAGE:$avgtxt GPRINT:Min:LAST:$curtxt GPRINT:Min:MAX:$maxtxt COMMENT:\\l \ #LINE1:Cur#00dd00:Cur GPRINT:Cur:MIN:$mintxt GPRINT:Cur:AVERAGE:$avgtxt GPRINT:Cur:LAST:$curtxt GPRINT:Cur:MAX:$maxtxt COMMENT:\\l \ #LINE1:Max#0000dd:Max GPRINT:Max:MIN:$mintxt GPRINT:Max:AVERAGE:$avgtxt GPRINT:Max:LAST:$curtxt GPRINT:Max:MAX:$maxtxt COMMENT:\\l \ #LINE1:Avg#000000 } msg]; if {$num!=0} {puts " $num: $msg"} } # proc GraphGauge3 {name data1 data2 data3 {type "Day"} {stime ""} {etime ""}} { puts -nonewline " GAUGE $name $type" ; flush stdout if {$stime!=""} {set stime "-s $stime"} {set stime "-s -1day"} if {$etime!=""} {set etime "-e $etime"} {set etime "-e now"} set mintxt "Min %8.4lg"; set avgtxt "Avg %8.4lg"; set curtxt "Cur %8.4lg"; set maxtxt "Max %8.4lg" set num [catch { exec /usr/local/rrdtool/bin/rrdtool graph \ /home/berlin/public_html/rrd/${name}_${type}.png -A -w 900 -h 300 $stime $etime \ DEF:Min1=${data1}.rrd:${data1}:MIN DEF:Avg1=${data1}.rrd:${data1}:AVERAGE DEF:Cur1=${data1}.rrd:${data1}:LAST DEF:Max1=${data1}.rrd:${data1}:MAX \ DEF:Min2=${data2}.rrd:${data2}:MIN DEF:Avg2=${data2}.rrd:${data2}:AVERAGE DEF:Cur2=${data2}.rrd:${data2}:LAST DEF:Max2=${data2}.rrd:${data2}:MAX \ DEF:Min3=${data3}.rrd:${data3}:MIN DEF:Avg3=${data3}.rrd:${data3}:AVERAGE DEF:Cur3=${data3}.rrd:${data3}:LAST DEF:Max3=${data3}.rrd:${data3}:MAX \ LINE1:Avg1#aa0000:$data1 GPRINT:Avg1:MIN:$mintxt GPRINT:Avg1:AVERAGE:$avgtxt GPRINT:Avg1:MAX:$maxtxt GPRINT:Avg1:LAST:$curtxt COMMENT:\\l \ LINE1:Avg2#0000aa:$data2 GPRINT:Avg2:MIN:$mintxt GPRINT:Avg2:AVERAGE:$avgtxt GPRINT:Avg2:MAX:$maxtxt GPRINT:Avg2:LAST:$curtxt COMMENT:\\l \ LINE1:Avg3#000000:$data3 GPRINT:Avg3:MIN:$mintxt GPRINT:Avg3:AVERAGE:$avgtxt GPRINT:Avg3:MAX:$maxtxt GPRINT:Avg3:LAST:$curtxt COMMENT:\\l \ LINE1:Avg2#0000aa LINE1:Avg1#aa0000 #LINE1:Min#dd0000:Min GPRINT:Min:MIN:$mintxt GPRINT:Min:AVERAGE:$avgtxt GPRINT:Min:LAST:$curtxt GPRINT:Min:MAX:$maxtxt COMMENT:\\l \ #LINE1:Cur#00dd00:Cur GPRINT:Cur:MIN:$mintxt GPRINT:Cur:AVERAGE:$avgtxt GPRINT:Cur:LAST:$curtxt GPRINT:Cur:MAX:$maxtxt COMMENT:\\l \ #LINE1:Max#0000dd:Max GPRINT:Max:MIN:$mintxt GPRINT:Max:AVERAGE:$avgtxt GPRINT:Max:LAST:$curtxt GPRINT:Max:MAX:$maxtxt COMMENT:\\l \ #LINE1:Avg#000000 } msg]; if {$num!=0} {puts " $num: $msg"} } proc GraphGaugeMix {name data1 data2 data3 {type "Day"} {stime ""} {etime ""}} { puts -nonewline " GAUGE $name $type" ; flush stdout if {$stime!=""} {set stime "-s $stime"} {set stime "-s -1day"} if {$etime!=""} {set etime "-e $etime"} {set etime "-e now"} set text "Limits und Total User" set text1 "Channel Limit (+5) " set text2 "Required Limit " set text3 "Total Users " set mintxt "Min %8.4lg"; set avgtxt "Avg %8.4lg"; set curtxt "Cur %8.4lg"; set maxtxt "Max %8.4lg" set num [catch { exec /usr/local/rrdtool/bin/rrdtool graph \ /home/berlin/public_html/rrd/${name}_${type}.png -A -w 900 -h 300 $stime $etime -t $text \ DEF:Min1=${data1}.rrd:${data1}:MIN DEF:Avg1=${data1}.rrd:${data1}:AVERAGE DEF:Cur1=${data1}.rrd:${data1}:LAST DEF:Max1=${data1}.rrd:${data1}:MAX \ DEF:Min2=${data2}.rrd:${data2}:MIN DEF:Avg2=${data2}.rrd:${data2}:AVERAGE DEF:Cur2=${data2}.rrd:${data2}:LAST DEF:Max2=${data2}.rrd:${data2}:MAX \ DEF:Min3=${data3}.rrd:${data3}:MIN DEF:Avg3=${data3}.rrd:${data3}:AVERAGE DEF:Cur3=${data3}.rrd:${data3}:LAST DEF:Max3=${data3}.rrd:${data3}:MAX \ CDEF:Avg1d=Avg1,5,+ CDEF:Avg2d=Avg2,0,+ \ LINE1:Avg1d#aa0000:$text1 GPRINT:Avg1:MIN:$mintxt GPRINT:Avg1:AVERAGE:$avgtxt GPRINT:Avg1:MAX:$maxtxt GPRINT:Avg1:LAST:$curtxt COMMENT:\\l \ LINE1:Avg2d#0000aa:$text2 GPRINT:Avg2:MIN:$mintxt GPRINT:Avg2:AVERAGE:$avgtxt GPRINT:Avg2:MAX:$maxtxt GPRINT:Avg2:LAST:$curtxt COMMENT:\\l \ LINE1:Avg3#000000:$text3 GPRINT:Avg3:MIN:$mintxt GPRINT:Avg3:AVERAGE:$avgtxt GPRINT:Avg3:MAX:$maxtxt GPRINT:Avg3:LAST:$curtxt COMMENT:\\l \ LINE1:Avg2d#0000aa LINE1:Avg1d#aa0000 #LINE1:Min#dd0000:Min GPRINT:Min:MIN:$mintxt GPRINT:Min:AVERAGE:$avgtxt GPRINT:Min:LAST:$curtxt GPRINT:Min:MAX:$maxtxt COMMENT:\\l \ #LINE1:Cur#00dd00:Cur GPRINT:Cur:MIN:$mintxt GPRINT:Cur:AVERAGE:$avgtxt GPRINT:Cur:LAST:$curtxt GPRINT:Cur:MAX:$maxtxt COMMENT:\\l \ #LINE1:Max#0000dd:Max GPRINT:Max:MIN:$mintxt GPRINT:Max:AVERAGE:$avgtxt GPRINT:Max:LAST:$curtxt GPRINT:Max:MAX:$maxtxt COMMENT:\\l \ #LINE1:Avg#000000 } msg]; if {$num!=0} {puts " $num: $msg"} } proc GraphGaugeUser {name data1 data2 data3 {type "Day"} {stime ""} {etime ""}} { puts -nonewline " GAUGE $name $type" ; flush stdout if {$stime!=""} {set stime "-s $stime"} {set stime "-s -1day"} if {$etime!=""} {set etime "-e $etime"} {set etime "-e now"} set text "Voice, Kicks und OPs" set text1 "Unsichtbare Kicks (+1) " set text2 "Voice Warteschlange " set text3 "OPs/Bots im Channel " set mintxt "Min %8.4lg"; set avgtxt "Avg %8.4lg"; set curtxt "Cur %8.4lg"; set maxtxt "Max %8.4lg" set num [catch { exec /usr/local/rrdtool/bin/rrdtool graph \ /home/berlin/public_html/rrd/${name}_${type}.png -A -w 900 -h 300 $stime $etime -t $text \ DEF:Min1=${data1}.rrd:${data1}:MIN DEF:Avg1=${data1}.rrd:${data1}:AVERAGE DEF:Cur1=${data1}.rrd:${data1}:LAST DEF:Max1=${data1}.rrd:${data1}:MAX \ DEF:Min2=${data2}.rrd:${data2}:MIN DEF:Avg2=${data2}.rrd:${data2}:AVERAGE DEF:Cur2=${data2}.rrd:${data2}:LAST DEF:Max2=${data2}.rrd:${data2}:MAX \ DEF:Min3=${data3}.rrd:${data3}:MIN DEF:Avg3=${data3}.rrd:${data3}:AVERAGE DEF:Cur3=${data3}.rrd:${data3}:LAST DEF:Max3=${data3}.rrd:${data3}:MAX \ CDEF:Avg1d=Avg1,1,+ \ LINE1:Avg1d#aa0000:$text1 GPRINT:Avg1:MIN:$mintxt GPRINT:Avg1:AVERAGE:$avgtxt GPRINT:Avg1:MAX:$maxtxt GPRINT:Avg1:LAST:$curtxt COMMENT:\\l \ LINE1:Avg2#0000aa:$text2 GPRINT:Avg2:MIN:$mintxt GPRINT:Avg2:AVERAGE:$avgtxt GPRINT:Avg2:MAX:$maxtxt GPRINT:Avg2:LAST:$curtxt COMMENT:\\l \ LINE1:Avg3#000000:$text3 GPRINT:Avg3:MIN:$mintxt GPRINT:Avg3:AVERAGE:$avgtxt GPRINT:Avg3:MAX:$maxtxt GPRINT:Avg3:LAST:$curtxt COMMENT:\\l \ LINE1:Avg2#0000aa LINE1:Avg1d#aa0000 #LINE1:Min#dd0000:Min GPRINT:Min:MIN:$mintxt GPRINT:Min:AVERAGE:$avgtxt GPRINT:Min:LAST:$curtxt GPRINT:Min:MAX:$maxtxt COMMENT:\\l \ #LINE1:Cur#00dd00:Cur GPRINT:Cur:MIN:$mintxt GPRINT:Cur:AVERAGE:$avgtxt GPRINT:Cur:LAST:$curtxt GPRINT:Cur:MAX:$maxtxt COMMENT:\\l \ #LINE1:Max#0000dd:Max GPRINT:Max:MIN:$mintxt GPRINT:Max:AVERAGE:$avgtxt GPRINT:Max:LAST:$curtxt GPRINT:Max:MAX:$maxtxt COMMENT:\\l \ #LINE1:Avg#000000 } msg]; if {$num!=0} {puts " $num: $msg"} } proc GraphGaugeVoice {name data1 data2 data3 {type "Day"} {stime ""} {etime ""}} { puts -nonewline " GAUGE $name $type" ; flush stdout if {$stime!=""} {set stime "-s $stime"} {set stime "-s -1day"} if {$etime!=""} {set etime "-e $etime"} {set etime "-e now"} set text "Voice, Unsichtbare und normale Chatter" set text1 "Voice " set text2 "Unsichtbare " set text3 "Chatter ohne + " set mintxt "Min %8.4lg"; set avgtxt "Avg %8.4lg"; set curtxt "Cur %8.4lg"; set maxtxt "Max %8.4lg" set num [catch { exec /usr/local/rrdtool/bin/rrdtool graph \ /home/berlin/public_html/rrd/${name}_${type}.png -A -w 900 -h 300 $stime $etime -t $text \ DEF:Min1=${data1}.rrd:${data1}:MIN DEF:Avg1=${data1}.rrd:${data1}:AVERAGE DEF:Cur1=${data1}.rrd:${data1}:LAST DEF:Max1=${data1}.rrd:${data1}:MAX \ DEF:Min2=${data2}.rrd:${data2}:MIN DEF:Avg2=${data2}.rrd:${data2}:AVERAGE DEF:Cur2=${data2}.rrd:${data2}:LAST DEF:Max2=${data2}.rrd:${data2}:MAX \ DEF:Min3=${data3}.rrd:${data3}:MIN DEF:Avg3=${data3}.rrd:${data3}:AVERAGE DEF:Cur3=${data3}.rrd:${data3}:LAST DEF:Max3=${data3}.rrd:${data3}:MAX \ LINE1:Avg1#aa0000:$text1 GPRINT:Avg1:MIN:$mintxt GPRINT:Avg1:AVERAGE:$avgtxt GPRINT:Avg1:MAX:$maxtxt GPRINT:Avg1:LAST:$curtxt COMMENT:\\l \ LINE1:Avg2#0000aa:$text2 GPRINT:Avg2:MIN:$mintxt GPRINT:Avg2:AVERAGE:$avgtxt GPRINT:Avg2:MAX:$maxtxt GPRINT:Avg2:LAST:$curtxt COMMENT:\\l \ LINE1:Avg3#000000:$text3 GPRINT:Avg3:MIN:$mintxt GPRINT:Avg3:AVERAGE:$avgtxt GPRINT:Avg3:MAX:$maxtxt GPRINT:Avg3:LAST:$curtxt COMMENT:\\l \ LINE1:Avg2#0000aa LINE1:Avg1#aa0000 #LINE1:Min#dd0000:Min GPRINT:Min:MIN:$mintxt GPRINT:Min:AVERAGE:$avgtxt GPRINT:Min:LAST:$curtxt GPRINT:Min:MAX:$maxtxt COMMENT:\\l \ #LINE1:Cur#00dd00:Cur GPRINT:Cur:MIN:$mintxt GPRINT:Cur:AVERAGE:$avgtxt GPRINT:Cur:LAST:$curtxt GPRINT:Cur:MAX:$maxtxt COMMENT:\\l \ #LINE1:Max#0000dd:Max GPRINT:Max:MIN:$mintxt GPRINT:Max:AVERAGE:$avgtxt GPRINT:Max:LAST:$curtxt GPRINT:Max:MAX:$maxtxt COMMENT:\\l \ #LINE1:Avg#000000 } msg]; if {$num!=0} {puts " $num: $msg"} } # proc GraphGauge4 {name data1 data2 data3 data4 {type "Day"} {stime ""} {etime ""}} { puts -nonewline " GAUGE $name $type" ; flush stdout if {$stime!=""} {set stime "-s $stime"} {set stime "-s -1day"} if {$etime!=""} {set etime "-e $etime"} {set etime "-e now"} set mintxt "Min %8.4lg"; set avgtxt "Avg %8.4lg"; set curtxt "Cur %8.4lg"; set maxtxt "Max %8.4lg" set num [catch { exec /usr/local/rrdtool/bin/rrdtool graph \ /home/berlin/public_html/rrd/${name}_${type}.png -A -w 900 -h 300 $stime $etime \ DEF:Min1=${data1}.rrd:${data1}:MIN DEF:Avg1=${data1}.rrd:${data1}:AVERAGE DEF:Cur1=${data1}.rrd:${data1}:LAST DEF:Max1=${data1}.rrd:${data1}:MAX \ DEF:Min2=${data2}.rrd:${data2}:MIN DEF:Avg2=${data2}.rrd:${data2}:AVERAGE DEF:Cur2=${data2}.rrd:${data2}:LAST DEF:Max2=${data2}.rrd:${data2}:MAX \ DEF:Min3=${data3}.rrd:${data3}:MIN DEF:Avg3=${data3}.rrd:${data3}:AVERAGE DEF:Cur3=${data3}.rrd:${data3}:LAST DEF:Max3=${data3}.rrd:${data3}:MAX \ DEF:Min4=${data4}.rrd:${data4}:MIN DEF:Avg4=${data4}.rrd:${data4}:AVERAGE DEF:Cur4=${data4}.rrd:${data4}:LAST DEF:Max4=${data4}.rrd:${data4}:MAX \ LINE1:Avg1#aa0000:$data1 GPRINT:Avg1:MIN:$mintxt GPRINT:Avg1:AVERAGE:$avgtxt GPRINT:Avg1:MAX:$maxtxt GPRINT:Avg1:LAST:$curtxt COMMENT:\\l \ LINE1:Avg2#0000aa:$data2 GPRINT:Avg2:MIN:$mintxt GPRINT:Avg2:AVERAGE:$avgtxt GPRINT:Avg2:MAX:$maxtxt GPRINT:Avg2:LAST:$curtxt COMMENT:\\l \ LINE1:Avg3#00aa00:$data3 GPRINT:Avg3:MIN:$mintxt GPRINT:Avg3:AVERAGE:$avgtxt GPRINT:Avg3:MAX:$maxtxt GPRINT:Avg3:LAST:$curtxt COMMENT:\\l \ LINE1:Avg4#000000:$data4 GPRINT:Avg4:MIN:$mintxt GPRINT:Avg4:AVERAGE:$avgtxt GPRINT:Avg4:MAX:$maxtxt GPRINT:Avg4:LAST:$curtxt COMMENT:\\l \ LINE1:Avg3#00aa00 LINE1:Avg2#0000aa LINE1:Avg1#aa0000 #LINE1:Min#dd0000:Min GPRINT:Min:MIN:$mintxt GPRINT:Min:AVERAGE:$avgtxt GPRINT:Min:LAST:$curtxt GPRINT:Min:MAX:$maxtxt COMMENT:\\l \ #LINE1:Cur#00dd00:Cur GPRINT:Cur:MIN:$mintxt GPRINT:Cur:AVERAGE:$avgtxt GPRINT:Cur:LAST:$curtxt GPRINT:Cur:MAX:$maxtxt COMMENT:\\l \ #LINE1:Max#0000dd:Max GPRINT:Max:MIN:$mintxt GPRINT:Max:AVERAGE:$avgtxt GPRINT:Max:LAST:$curtxt GPRINT:Max:MAX:$maxtxt COMMENT:\\l \ #LINE1:Avg#000000 } msg]; if {$num!=0} {puts " $num: $msg"} } # # Total; OP; Voice; #User [lindex $line 5]; Invis [lindex $line 6]; Ulist [lindex $line 7]; LimitT [lindex $line 8]; #Limit [lindex $line 9]; LimitL [lindex $line 10]; Klist [lindex $line 11];Vlist [lindex $line 12]; #set Netsplit [lindex $line 13];N etjoin [lindex $line 14]; WPM [lindex $line 15]; LPM [lindex $line 16]; set type 01_01Day; set time -1day set type 09_All; set time 1067521619 foreach {type time} [list 01_01Hour -1hour 01_06Hour -6hour 01_12Hour -12hour 02_01Day -1day 02_03Day -3day 03_01Week -1week 03_02Week -2week 04_01Month -1month 04_02Month -2month 04_03Month -3month 04_06Month -6month 05_01Year -1year 09_All 1067521619] { GraphGaugeMix Mix LimitL Limit Total $type $time GraphGaugeNet Net Netsplit Netjoin $type $time GraphGaugeUser User Klist Vlist OP $type $time GraphGaugeVoice Voice Voice Invis User $type $time GraphGauge2A Talk WPM LPM $type $time } proc GraphEnd {} {} return set graph LimitT; GraphGauge $graph $type $time "" GraphAbsolute $graph $type $time "" GraphDerive $graph $type $time "" GraphCounter $graph $type $time "" return #GraphGauge Total 05_All 1067521619 "" #foreach {type time} [list 01_Hour -1hour 02_Day -1day 03_Week -1week 04_Month -1month 09_All 1067521619] foreach {type time} [list 01_01Hour -1hour 01_06Hour -6hour 01_12Hour -12hour 02_01Day -1day 02_03Day -3day 03_01Week -1week] { GraphGauge Total $type $time "" GraphDerive Total $type $time "" GraphAbsolute Total $type $time "" GraphCounter Total $type $time "" GraphGauge OP $type $time "" GraphGauge Voice $type $time "" GraphGauge User $type $time "" GraphGauge Invis $type $time "" GraphGauge Ulist $type $time "" GraphGauge LimitT $type $time "" GraphAbsolute LimitT $type $time "" GraphDerive LimitT $type $time "" GraphCounter LimitT $type $time "" GraphGauge Limit $type $time "" GraphGauge LimitL $type $time "" GraphGauge Klist $type $time "" GraphGauge Vlist $type $time "" GraphDerive Klist $type $time "" GraphAbsolute Klist $type $time "" GraphCounter Klist $type $time "" GraphGauge Netsplit $type $time "" GraphDerive Netsplit $type $time "" GraphAbsolute Netsplit $type $time "" GraphCounter Netsplit $type $time "" GraphGauge Netjoin $type $time "" GraphDerive Netjoin $type $time "" GraphAbsolute Netjoin $type $time "" GraphCounter Netjoin $type $time "" GraphGauge WPM $type $time "" GraphGauge LPM $type $time "" } #GraphGauge Klist 03_Week2 "07.04.2004 00:00" "08.04.2004 00:00" #GraphDerive Klist 03_Week2 "07.04.2004 00:00" "08.04.2004 00:00" #GraphAbsolute Klist 03_Week2 "07.04.2004 00:00" "08.04.2004 00:00" #GraphCounter Klist 03_Week2 "07.04.2004 00:00" "08.04.2004 00:00" } proc DayFile {file ImageFile {Facts 0}} { global color set MaxX 832; set MaxY 452; set FieldX 1440; set FieldY 800; set FieldX 720; set FieldY 400; set StepX [expr $FieldX/360.]; set StepY [expr $FieldY/200.] set gd_out [gd create $MaxX $MaxY] set font "/usr/local/share/ttf/arial.ttf"; set fontsize 17 set fontsize 11 set color(bg) [gd color new $gd_out 191 191 191]; #set color(transparent) [gd color transparent $gd_out $color(bg)]; set color(yellow) [gd color new $gd_out 191 191 000]; set color(red) [gd color new $gd_out 191 000 000]; set color(red2) [gd color new $gd_out 159 000 000]; set color(red3) [gd color new $gd_out 127 000 000]; set color(green) [gd color new $gd_out 000 191 000]; set color(green2) [gd color new $gd_out 000 159 000]; set color(green3) [gd color new $gd_out 000 127 000]; set color(blue) [gd color new $gd_out 000 000 191]; set color(blue2) [gd color new $gd_out 000 000 159]; set color(blue3) [gd color new $gd_out 000 000 127]; set color(black) [gd color new $gd_out 050 050 050]; set color(realblack) [gd color new $gd_out 000 000 000]; set color(grey) [gd color new $gd_out 127 127 127]; set color(lgrey) [gd color new $gd_out 205 205 205]; set color(white) [gd color new $gd_out 223 223 223]; set color(realwhite) [gd color new $gd_out 255 255 255]; set color(Limit2++) [gd color new $gd_out 63 255 63] set color(Limit2+) [gd color new $gd_out 47 223 47] set color(Limit2) [gd color new $gd_out 031 191 031] set color(Limit2-) [gd color new $gd_out 15 159 15] set color(Limit2--) [gd color new $gd_out 0 127 0] set color(Limit++) [gd color new $gd_out 47 191 47] set color(Limit+) [gd color new $gd_out 31 159 31] set color(Limit) [gd color new $gd_out 15 127 15] set color(Limit-) [gd color new $gd_out 7 95 7] set color(Limit--) [gd color new $gd_out 0 63 0] set color(aLimit) [gd color new $gd_out 031 159 031] set color(pLimit) [gd color new $gd_out 031 127 031] set color(Total++) [gd color new $gd_out 191 191 191]; set color(Total+) [gd color new $gd_out 159 159 159]; set color(Total) [gd color new $gd_out 127 127 127]; set color(Total-) [gd color new $gd_out 95 95 95]; set color(Total--) [gd color new $gd_out 63 63 63]; set color(aTotal) [gd color new $gd_out 95 95 95]; set color(pTotal) [gd color new $gd_out 63 63 63]; set color(OP++) [gd color new $gd_out 255 191 000]; set color(OP+) [gd color new $gd_out 223 159 000]; set color(OP) [gd color new $gd_out 191 127 000]; set color(OP-) [gd color new $gd_out 159 95 000]; set color(OP--) [gd color new $gd_out 127 63 000]; set color(aOP) [gd color new $gd_out 159 95 000]; set color(pOP) [gd color new $gd_out 127 63 000]; set color(Vlist) [gd color new $gd_out 95 95 205]; set color(Klist) [gd color new $gd_out 205 95 95]; set color(Voice++) [gd color new $gd_out 111 111 213]; set color(Voice+) [gd color new $gd_out 95 95 181]; set color(Voice) [gd color new $gd_out 63 63 159]; set color(Voice-) [gd color new $gd_out 31 31 127]; set color(Voice--) [gd color new $gd_out 15 15 95]; set color(aVoice) [gd color new $gd_out 31 31 127]; set color(pVoice) [gd color new $gd_out 0 0 95]; set color(User++) [gd color new $gd_out 191 0 255]; set color(User+) [gd color new $gd_out 159 0 223]; set color(User) [gd color new $gd_out 127 0 191]; set color(User-) [gd color new $gd_out 95 0 159]; set color(User--) [gd color new $gd_out 63 0 127]; set color(aUser) [gd color new $gd_out 95 0 159]; set color(pUser) [gd color new $gd_out 63 0 127]; set color(Invis++) [gd color new $gd_out 255 0 191]; set color(Invis+) [gd color new $gd_out 223 0 159]; set color(Invis) [gd color new $gd_out 191 0 127]; set color(Invis-) [gd color new $gd_out 159 0 95]; set color(Invis--) [gd color new $gd_out 127 0 63]; set color(aInvis) [gd color new $gd_out 159 0 159]; set color(pInvis) [gd color new $gd_out 127 0 63]; set color(Ulist++) [gd color new $gd_out 223 0 159]; set color(Ulist+) [gd color new $gd_out 191 0 127]; set color(Ulist) [gd color new $gd_out 159 0 95]; set color(Ulist-) [gd color new $gd_out 127 0 63]; set color(Ulist--) [gd color new $gd_out 95 0 31]; set color(aUlist) [gd color new $gd_out 127 0 63]; set color(pUlist) [gd color new $gd_out 95 0 31]; proc drawFrame {} {} gd line $gd_out $color(black) [expr $FieldX+5] 3 [expr $FieldX+5] [expr $MaxY-5] gd line $gd_out $color(white) [expr $FieldX+8] 3 [expr $FieldX+8] [expr $MaxY-5] gd line $gd_out $color(black) 4 [expr $FieldY+5] [expr $FieldX+5] [expr $FieldY+5] gd line $gd_out $color(white) 4 [expr $FieldY+8] [expr $FieldX+5] [expr $FieldY+8] gd line $gd_out $color(white) 0 0 [expr $MaxX-1] 0 gd line $gd_out $color(white) 3 3 [expr $MaxX-4] 3 gd line $gd_out $color(black) [expr $MaxX-1] 0 [expr $MaxX-1] [expr $MaxY-1] gd line $gd_out $color(black) [expr $MaxX-4] 3 [expr $MaxX-4] [expr $MaxY-4] gd line $gd_out $color(black) 0 [expr $MaxY-1] [expr $MaxX-1] [expr $MaxY-1] gd line $gd_out $color(black) 3 [expr $MaxY-4] [expr $MaxX-4] [expr $MaxY-4] gd line $gd_out $color(white) 0 0 0 [expr $MaxY-1] gd line $gd_out $color(white) 3 3 3 [expr $MaxY-4] gdtext $gd_out $color(Limit) $font $fontsize 0 [expr ($FieldX)+$fontsize*3] [expr 2*$fontsize] "Limit" gdtext $gd_out $color(green2) $font $fontsize 0 [expr ($FieldX)+$fontsize*6+2] [expr 2*$fontsize] "Chan" gdtext $gd_out $color(Total) $font $fontsize 0 [expr ($FieldX)+$fontsize*3] [expr 4*$fontsize] "Total" gdtext $gd_out $color(OP) $font $fontsize 0 [expr ($FieldX)+$fontsize*3] [expr 6*$fontsize] "OP" gdtext $gd_out $color(Voice) $font $fontsize 0 [expr ($FieldX)+$fontsize*3] [expr 10*$fontsize] "Voice" gdtext $gd_out $color(User) $font $fontsize 0 [expr ($FieldX)+$fontsize*3] [expr 12*$fontsize] "User" gdtext $gd_out $color(Invis) $font $fontsize 0 [expr ($FieldX)+$fontsize*3] [expr 8*$fontsize] "Invis" gdtext $gd_out $color(bg) $font $fontsize [expr -3.1415/2] [expr ($FieldX)+($fontsize)+2] [expr 44] "< *10" for {set i 1} {$i<=14} {incr i} { gd line $gd_out $color(grey) 4 [expr ($FieldY+5)-int($i*$StepY*10)] [expr $FieldX+5] [expr ($FieldY+5)-int($i*$StepY*10)] if {$i<10} { gdtext $gd_out $color(bg) $font $fontsize [expr -3.1415/2] [expr ($FieldX)+($fontsize)+2] [expr (($FieldY+5)-int($i*$StepY*10)-($fontsize/2)*1)+1] "${i}" } { if {$i<16} {gdtext $gd_out $color(bg) $font $fontsize [expr -3.1415/2] [expr ($FieldX)+($fontsize)+2] [expr (($FieldY+5)-int($i*$StepY*10)-($fontsize/1)*1)+1] "${i}"} } } gdtext $gd_out $color(bg) $font $fontsize 0 16 [expr (($FieldY+8)+$fontsize*2)] "> hours" for {set i 1} {$i<=23} {incr i} { if {$i<=23} { gd line $gd_out $color(grey) [expr (($FieldX/24)*$i)+5] [expr ($FieldY/20)*6+5] [expr (($FieldX/24)*$i)+5] [expr $FieldY+5] } if {$i>2} { if {$i<10} { gdtext $gd_out $color(bg) $font $fontsize [expr -3.1415/2] [expr (($FieldX/24)*$i)+($fontsize/4)] [expr (($FieldY+8)+$fontsize*1)+1] $i } { gdtext $gd_out $color(bg) $font $fontsize [expr -3.1415/2] [expr (($FieldX/24)*$i)+($fontsize/4)] [expr (($FieldY+8)+($fontsize/2)*1)+1] $i } } } set getdate [split $file .] set tDay [string trimleft [lindex $getdate 4] 0]; set tMonth [expr [string trimleft [lindex $getdate 3] 0]+1]; set tYear [string trimleft [lindex $getdate 2] 0]; set Date "$tDay.$tMonth.$tYear" unset tDay tMonth tYear; gd text $gd_out $color(grey) $font [expr $fontsize*2] 0 [expr 24] [expr $fontsize*2+14] "Date: $Date" gd text $gd_out $color(grey) $font [expr $fontsize*2] 0 [expr 22] [expr $fontsize*2+12] "Date: $Date" gd text $gd_out $color(black) $font [expr $fontsize*2] 0 [expr 23] [expr $fontsize*2+13] "Date: $Date" gd text $gd_out $color(white) $font [expr $fontsize*2] 0 [expr 20] [expr $fontsize*2+10] "Date: $Date" gd text $gd_out $color(white) $font [expr $fontsize*2] 0 [expr 18] [expr $fontsize*2+8] "Date: $Date" gd text $gd_out $color(realwhite) $font [expr $fontsize*2] 0 [expr 19] [expr $fontsize*2+9] "Date: $Date" gd text $gd_out $color(bg) $font [expr $fontsize*2] 0 [expr 21] [expr $fontsize*2+11] "Date: $Date" set Date "#Berlin" gd text $gd_out $color(grey) $font [expr $fontsize*4] [expr -3.1415/2] [expr $MaxX-$fontsize*4-24] [expr $fontsize*4+($MaxY/3)+14] "$Date" gd text $gd_out $color(grey) $font [expr $fontsize*4] [expr -3.1415/2] [expr $MaxX-$fontsize*4-22] [expr $fontsize*4+($MaxY/3)+12] "$Date" gd text $gd_out $color(black) $font [expr $fontsize*4] [expr -3.1415/2] [expr $MaxX-$fontsize*4-23] [expr $fontsize*4+($MaxY/3)+13] "$Date" gd text $gd_out $color(white) $font [expr $fontsize*4] [expr -3.1415/2] [expr $MaxX-$fontsize*4-20] [expr $fontsize*4+($MaxY/3)+10] "$Date" gd text $gd_out $color(white) $font [expr $fontsize*4] [expr -3.1415/2] [expr $MaxX-$fontsize*4-18] [expr $fontsize*4+($MaxY/3)+8] "$Date" gd text $gd_out $color(realwhite) $font [expr $fontsize*4] [expr -3.1415/2] [expr $MaxX-$fontsize*4-19] [expr $fontsize*4+($MaxY/3)+9] "$Date" gd text $gd_out $color(bg) $font [expr $fontsize*4] [expr -3.1415/2] [expr $MaxX-$fontsize*4-21] [expr $fontsize*4+($MaxY/3)+11] "$Date" gd text $gd_out $color(bg) $font $fontsize 0 [expr $FieldX/2+19] [expr $fontsize+9] "Last Update [clock format [clock seconds]]" gd text $gd_out $color(bg) $font $fontsize 0 [expr $FieldX/2+20] [expr $fontsize+10] "Last Update [clock format [clock seconds]]" gd text $gd_out $color(bg) $font $fontsize 0 [expr $FieldX/2+21] [expr $fontsize+11] "Last Update [clock format [clock seconds]]" gd text $gd_out $color(bg) $font $fontsize 0 [expr $FieldX/2+20] [expr $fontsize+11] "Last Update [clock format [clock seconds]]" gd text $gd_out $color(bg) $font $fontsize 0 [expr $FieldX/2+21] [expr $fontsize+10] "Last Update [clock format [clock seconds]]" gd text $gd_out $color(bg) $font $fontsize 0 [expr $FieldX/2+22] [expr $fontsize+12] "Last Update [clock format [clock seconds]]" gd text $gd_out $color(realblack) $font $fontsize 0 [expr $FieldX/2+22] [expr $fontsize+12] "Last Update [clock format [clock seconds]]" gd text $gd_out $color(realwhite) $font $fontsize 0 [expr $FieldX/2+20] [expr $fontsize+10] "Last Update [clock format [clock seconds]]" gd text $gd_out $color(bg) $font $fontsize 0 [expr $FieldX/2+21] [expr $fontsize+11] "Last Update [clock format [clock seconds]]" #limit red set Peaks [ReadStats #berlin]; set PeakLast [lindex $Peaks 0]; array set Peak [lindex $Peaks 1]; unset Peaks; gdtext $gd_out $color(pUser) $font $fontsize 0 [expr 8] [expr $FieldY-int($Peak(User)*$StepY)-2] "UP $Peak(User)" gdtext $gd_out $color(pOP) $font $fontsize 0 [expr 8] [expr $FieldY-int($Peak(OP)*$StepY)-2] "OP $Peak(OP)" gdtext $gd_out $color(pInvis) $font $fontsize 0 [expr 8] [expr $FieldY-int($Peak(Invis)*$StepY)-2] "IP $Peak(Invis)" gdtext $gd_out $color(pVoice) $font $fontsize 0 [expr 8] [expr $FieldY-int($Peak(Voice)*$StepY)-2] "VP $Peak(Voice)" gdtext $gd_out $color(pTotal) $font $fontsize 0 [expr 8] [expr $FieldY-int($Peak(Total)*$StepY)-2] "Peak $Peak(Total)" #gdtext $gd_out $color(pUser) $font $fontsize 0 [expr $FieldX/2-20] [expr $FieldY-int($Peak(User)*$StepY)-2] "UP $Peak(User)" #gdtext $gd_out $color(pOP) $font $fontsize 0 [expr $FieldX/2-20] [expr $FieldY-int($Peak(OP)*$StepY)-2] "OP $Peak(OP)" #gdtext $gd_out $color(pInvis) $font $fontsize 0 [expr $FieldX/2-20] [expr $FieldY-int($Peak(Invis)*$StepY)-2] "IP $Peak(Invis)" #gdtext $gd_out $color(pVoice) $font $fontsize 0 [expr $FieldX/2-20] [expr $FieldY-int($Peak(Voice)*$StepY)-2] "VP $Peak(Voice)" #gdtext $gd_out $color(pTotal) $font $fontsize 0 [expr $FieldX/2-20] [expr $FieldY-int($Peak(Total)*$StepY)-2] "Peak $Peak(Total)" proc drawLines {} {} #total op voice user invis userlist limittick limit lastlimit set yTotalAvgTot 0 set yOPAvgTot 0 set yVoiceAvgTot 0 set yUserAvgTot 0 set yInvisAvgTot 0 set yUlistAvgTot 0 set yLimitAvgTot 0 set yLimitTAvgTot 0 set yLimitLAvgTot 0 set yKlistAvgTot 0 set yVlistAvgTot 0 set yTotalAvgNum 0 if {$file!=""} { if [file exists $file] { set fh [open $file r] while {![eof $fh]} { set line [gets $fh] if {$line!="" && $line!=[list]} { set hour [lindex $line 0]; if {[string index $hour 0]=="0"} {set hour [string replace $hour 0 0]} set min [lindex $line 1]; if {[string index $min 0]=="0"} {set min [string replace $min 0 0]} set xTotal [expr int((($hour*60)+$min)*($StepX/4))+5] incr yTotalAvgNum; set lTotal [lindex $line 2]; set yTotal [expr ($FieldY+5)-int($lTotal*$StepY)]; incr yTotalAvgTot $lTotal; set lOP [lindex $line 3]; set yOP [expr ($FieldY+5)-int($lOP*$StepY)]; incr yOPAvgTot $lOP set lVoice [lindex $line 4]; set yVoice [expr ($FieldY+5)-int($lVoice*$StepY)]; incr yVoiceAvgTot $lVoice set lUser [lindex $line 5]; set yUser [expr ($FieldY+5)-int($lUser*$StepY)]; incr yUserAvgTot $lUser set lInvis [lindex $line 6]; set yInvis [expr ($FieldY+5)-int($lInvis*$StepY)]; incr yInvisAvgTot $lInvis; set lUlist [lindex $line 7]; set yUlist [expr ($FieldY+5)-int($lUlist*$StepY)]; incr yUlistAvgTot $lUlist; set lLimitT [lindex $line 8]; set yLimitTick [expr ($FieldY+5)-int($lLimitT*$StepY)]; incr yLimitTAvgTot $lLimitT; set lLimit [lindex $line 9]; set yLimit [expr ($FieldY+5)-int($lLimit*$StepY)]; incr yLimitAvgTot $lLimit set lLimitL [lindex $line 10]; set yLimitLast [expr ($FieldY+5)-int($lLimitL*$StepY)]; incr yLimitLAvgTot $lLimitL set lKlist [lindex $line 11]; #incr lKlist [expr int(rand()*4)+10]; if {$lKlist==""} {set lKlist 0}; set yKlist [expr ($FieldY+5)-int($lKlist*$StepY)]; incr yKlistAvgTot $lKlist set lVlist [lindex $line 12]; #incr lVlist [expr int(rand()*4)+0]; if {$lVlist==""} {set lVlist 0}; set yVlist [expr ($FieldY+5)-int($lVlist*$StepY)]; incr yVlistAvgTot $lVlist #gd line $gd_out $color(green) $xTotal 4 $xTotal 723 if {$yLimitLast<=$yLimit} { #gd line $gd_out $color(green2) $xTotal 403 $xTotal $yLimitLast #gd line $gd_out $color(green2) [expr $xTotal-1] $yLimitLast [expr $xTotal+1] $yLimitLast #gd line $gd_out $color(green2) $xTotal [expr $yLimitLast-1] $xTotal [expr $yLimitLast+1] gd line $gd_out $color(Limit2-) [expr $xTotal+1] [expr $yLimitLast+1] [expr $xTotal+1] [expr $yLimitLast] gd line $gd_out $color(Limit2-) [expr $xTotal+1] [expr $yLimitLast+1] [expr $xTotal] [expr $yLimitLast+1] gd line $gd_out $color(Limit2+) [expr $xTotal-1] [expr $yLimitLast-1] [expr $xTotal+1] [expr $yLimitLast] gd line $gd_out $color(Limit2+) [expr $xTotal-1] [expr $yLimitLast-1] [expr $xTotal] [expr $yLimitLast+1] gd line $gd_out $color(Limit2++) [expr $xTotal-1] [expr $yLimitLast-1] [expr $xTotal-1] [expr $yLimitLast-1] gd line $gd_out $color(Limit2--) [expr $xTotal+1] [expr $yLimitLast+1] [expr $xTotal+1] [expr $yLimitLast+1] gd line $gd_out $color(Limit2) [expr $xTotal-1] [expr $yLimitLast] [expr $xTotal+1] [expr $yLimitLast] #gd line $gd_out $color(green) $xTotal 403 $xTotal $yLimit #gd line $gd_out $color(Limit) [expr $xTotal-1] $yLimit [expr $xTotal+1] $yLimit #gd line $gd_out $color(Limit) $xTotal [expr $yLimit-1] $xTotal [expr $yLimit+1] gd line $gd_out $color(Limit-) [expr $xTotal+1] [expr $yLimit+1] [expr $xTotal+1] [expr $yLimit] gd line $gd_out $color(Limit-) [expr $xTotal+1] [expr $yLimit+1] [expr $xTotal] [expr $yLimit+1] gd line $gd_out $color(Limit+) [expr $xTotal-1] [expr $yLimit-1] [expr $xTotal+1] [expr $yLimit] gd line $gd_out $color(Limit+) [expr $xTotal-1] [expr $yLimit-1] [expr $xTotal] [expr $yLimit+1] gd line $gd_out $color(Limit++) [expr $xTotal-1] [expr $yLimit-1] [expr $xTotal-1] [expr $yLimit-1] gd line $gd_out $color(Limit--) [expr $xTotal+1] [expr $yLimit+1] [expr $xTotal+1] [expr $yLimit+1] gd line $gd_out $color(Limit) [expr $xTotal-1] [expr $yLimit] [expr $xTotal+1] [expr $yLimit] } { #gd line $gd_out $color(green) $xTotal 403 $xTotal $yLimit #gd line $gd_out $color(Limit) [expr $xTotal-1] $yLimit [expr $xTotal+1] $yLimit #gd line $gd_out $color(Limit) $xTotal [expr $yLimit-1] $xTotal [expr $yLimit+1] gd line $gd_out $color(Limit-) [expr $xTotal+1] [expr $yLimit+1] [expr $xTotal+1] [expr $yLimit] gd line $gd_out $color(Limit-) [expr $xTotal+1] [expr $yLimit+1] [expr $xTotal] [expr $yLimit+1] gd line $gd_out $color(Limit+) [expr $xTotal-1] [expr $yLimit-1] [expr $xTotal+1] [expr $yLimit] gd line $gd_out $color(Limit+) [expr $xTotal-1] [expr $yLimit-1] [expr $xTotal] [expr $yLimit+1] gd line $gd_out $color(Limit++) [expr $xTotal-1] [expr $yLimit-1] [expr $xTotal-1] [expr $yLimit-1] gd line $gd_out $color(Limit--) [expr $xTotal+1] [expr $yLimit+1] [expr $xTotal+1] [expr $yLimit+1] gd line $gd_out $color(Limit) [expr $xTotal-1] [expr $yLimit] [expr $xTotal+1] [expr $yLimit] #gd line $gd_out $color(green2) $xTotal 403 $xTotal $yLimitLast #gd line $gd_out $color(green2) [expr $xTotal-1] $yLimitLast [expr $xTotal+1] $yLimitLast #gd line $gd_out $color(green2) $xTotal [expr $yLimitLast-1] $xTotal [expr $yLimitLast+1] gd line $gd_out $color(Limit2-) [expr $xTotal+1] [expr $yLimitLast+1] [expr $xTotal+1] [expr $yLimitLast] gd line $gd_out $color(Limit2-) [expr $xTotal+1] [expr $yLimitLast+1] [expr $xTotal] [expr $yLimitLast+1] gd line $gd_out $color(Limit2+) [expr $xTotal-1] [expr $yLimitLast-1] [expr $xTotal+1] [expr $yLimitLast] gd line $gd_out $color(Limit2+) [expr $xTotal-1] [expr $yLimitLast-1] [expr $xTotal] [expr $yLimitLast+1] gd line $gd_out $color(Limit2++) [expr $xTotal-1] [expr $yLimitLast-1] [expr $xTotal-1] [expr $yLimitLast-1] gd line $gd_out $color(Limit2--) [expr $xTotal+1] [expr $yLimitLast+1] [expr $xTotal+1] [expr $yLimitLast+1] gd line $gd_out $color(Limit2) [expr $xTotal-1] [expr $yLimitLast] [expr $xTotal+1] [expr $yLimitLast] } #gd line $gd_out $color(Total) [expr $xTotal-1] $yTotal [expr $xTotal+1] $yTotal #gd line $gd_out $color(Total) $xTotal [expr $yTotal-1] $xTotal [expr $yTotal+1] gd line $gd_out $color(Total-) [expr $xTotal+1] [expr $yTotal+1] [expr $xTotal+1] [expr $yTotal] gd line $gd_out $color(Total-) [expr $xTotal+1] [expr $yTotal+1] [expr $xTotal] [expr $yTotal+1] gd line $gd_out $color(Total+) [expr $xTotal-1] [expr $yTotal-1] [expr $xTotal+1] [expr $yTotal] gd line $gd_out $color(Total+) [expr $xTotal-1] [expr $yTotal-1] [expr $xTotal] [expr $yTotal+1] gd line $gd_out $color(Total++) [expr $xTotal-1] [expr $yTotal-1] [expr $xTotal-1] [expr $yTotal-1] gd line $gd_out $color(Total--) [expr $xTotal+1] [expr $yTotal+1] [expr $xTotal+1] [expr $yTotal+1] gd line $gd_out $color(Total) [expr $xTotal-1] [expr $yTotal] [expr $xTotal+1] [expr $yTotal] #gd line $gd_out $color(OP) $xTotal [expr $FieldY+5] $xTotal $yOP #gd line $gd_out $color(OP) [expr $xTotal-1] $yOP [expr $xTotal+1] $yOP #gd line $gd_out $color(OP) $xTotal [expr $yOP-1] $xTotal [expr $yOP+1] gd line $gd_out $color(OP-) [expr $xTotal+1] [expr $yOP+1] [expr $xTotal+1] [expr $yOP] gd line $gd_out $color(OP-) [expr $xTotal+1] [expr $yOP+1] [expr $xTotal] [expr $yOP+1] gd line $gd_out $color(OP+) [expr $xTotal-1] [expr $yOP-1] [expr $xTotal+1] [expr $yOP] gd line $gd_out $color(OP+) [expr $xTotal-1] [expr $yOP-1] [expr $xTotal] [expr $yOP+1] gd line $gd_out $color(OP++) [expr $xTotal-1] [expr $yOP-1] [expr $xTotal-1] [expr $yOP-1] gd line $gd_out $color(OP--) [expr $xTotal+1] [expr $yOP+1] [expr $xTotal+1] [expr $yOP+1] gd line $gd_out $color(OP) [expr $xTotal-1] [expr $yOP] [expr $xTotal+1] [expr $yOP] #gd line $gd_out $color(Ulist) [expr $xTotal-1] $yUlist [expr $xTotal+1] $yUlist #gd line $gd_out $color(Ulist) $xTotal [expr $yUlist-1] $xTotal [expr $yUlist+1] gd line $gd_out $color(Ulist-) [expr $xTotal+1] [expr $yUlist+1] [expr $xTotal+1] [expr $yUlist] gd line $gd_out $color(Ulist-) [expr $xTotal+1] [expr $yUlist+1] [expr $xTotal] [expr $yUlist+1] gd line $gd_out $color(Ulist+) [expr $xTotal-1] [expr $yUlist-1] [expr $xTotal+1] [expr $yUlist] gd line $gd_out $color(Ulist+) [expr $xTotal-1] [expr $yUlist-1] [expr $xTotal] [expr $yUlist+1] gd line $gd_out $color(Ulist++) [expr $xTotal-1] [expr $yUlist-1] [expr $xTotal-1] [expr $yUlist-1] gd line $gd_out $color(Ulist--) [expr $xTotal+1] [expr $yUlist+1] [expr $xTotal+1] [expr $yUlist+1] gd line $gd_out $color(Ulist) [expr $xTotal-1] [expr $yUlist] [expr $xTotal+1] [expr $yUlist] #gd line $gd_out $color(red) $xTotal 403 $xTotal $yInvis #gd line $gd_out $color(Invis) [expr $xTotal-1] $yInvis [expr $xTotal+1] $yInvis #gd line $gd_out $color(Invis) $xTotal [expr $yInvis-1] $xTotal [expr $yInvis+1] gd line $gd_out $color(Invis-) [expr $xTotal+1] [expr $yInvis+1] [expr $xTotal+1] [expr $yInvis] gd line $gd_out $color(Invis-) [expr $xTotal+1] [expr $yInvis+1] [expr $xTotal] [expr $yInvis+1] gd line $gd_out $color(Invis+) [expr $xTotal-1] [expr $yInvis-1] [expr $xTotal+1] [expr $yInvis] gd line $gd_out $color(Invis+) [expr $xTotal-1] [expr $yInvis-1] [expr $xTotal] [expr $yInvis+1] gd line $gd_out $color(Invis++) [expr $xTotal-1] [expr $yInvis-1] [expr $xTotal-1] [expr $yInvis-1] gd line $gd_out $color(Invis--) [expr $xTotal+1] [expr $yInvis+1] [expr $xTotal+1] [expr $yInvis+1] gd line $gd_out $color(Invis) [expr $xTotal-1] [expr $yInvis] [expr $xTotal+1] [expr $yInvis] #gd line $gd_out $color(blue) $xTotal 403 $xTotal $yUser #gd line $gd_out $color(User) [expr $xTotal-1] $yUser [expr $xTotal+1] $yUser #gd line $gd_out $color(User) $xTotal [expr $yUser-1] $xTotal [expr $yUser+1] gd line $gd_out $color(User-) [expr $xTotal+1] [expr $yUser+1] [expr $xTotal+1] [expr $yUser] gd line $gd_out $color(User-) [expr $xTotal+1] [expr $yUser+1] [expr $xTotal] [expr $yUser+1] gd line $gd_out $color(User+) [expr $xTotal-1] [expr $yUser-1] [expr $xTotal+1] [expr $yUser] gd line $gd_out $color(User+) [expr $xTotal-1] [expr $yUser-1] [expr $xTotal] [expr $yUser+1] gd line $gd_out $color(User++) [expr $xTotal-1] [expr $yUser-1] [expr $xTotal-1] [expr $yUser-1] gd line $gd_out $color(User--) [expr $xTotal+1] [expr $yUser+1] [expr $xTotal+1] [expr $yUser+1] gd line $gd_out $color(User) [expr $xTotal-1] [expr $yUser] [expr $xTotal+1] [expr $yUser] #gd line $gd_out $color(blue2) $xTotal 403 $xTotal $yVoice gd line $gd_out $color(Voice-) [expr $xTotal+1] [expr $yVoice+1] [expr $xTotal+1] [expr $yVoice] gd line $gd_out $color(Voice-) [expr $xTotal+1] [expr $yVoice+1] [expr $xTotal] [expr $yVoice+1] gd line $gd_out $color(Voice+) [expr $xTotal-1] [expr $yVoice-1] [expr $xTotal+1] [expr $yVoice] gd line $gd_out $color(Voice+) [expr $xTotal-1] [expr $yVoice-1] [expr $xTotal] [expr $yVoice+1] gd line $gd_out $color(Voice++) [expr $xTotal-1] [expr $yVoice-1] [expr $xTotal-1] [expr $yVoice-1] gd line $gd_out $color(Voice--) [expr $xTotal+1] [expr $yVoice+1] [expr $xTotal+1] [expr $yVoice+1] gd line $gd_out $color(Voice) [expr $xTotal-1] [expr $yVoice] [expr $xTotal+1] [expr $yVoice] #puts "if {$yVlist<=$yKlist}" if {$yVlist<=$yKlist} { #puts "if {$yVlist!=404} " if {$yVlist!="405"} { gd line $gd_out $color(Vlist) $xTotal [expr $FieldY+5] $xTotal $yVlist #gd line $gd_out $color(Vlist) [expr $xTotal-1] $yVlist [expr $xTotal+1] $yVlist #gd line $gd_out $color(Vlist) $xTotal [expr $yVlist-1] $xTotal [expr $yVlist+1] } #puts "if {$yKlist!=404} " if {$yKlist!="405"} { gd line $gd_out $color(Klist) $xTotal [expr $FieldY+5] $xTotal $yKlist #gd line $gd_out $color(Klist) [expr $xTotal-1] $yKlist [expr $xTotal+1] $yKlist #gd line $gd_out $color(Klist) $xTotal [expr $yKlist-1] $xTotal [expr $yKlist+1] } } { #puts "if {$yKlist!=404} " if {$yKlist!="405"} { gd line $gd_out $color(Klist) $xTotal [expr $FieldY+5] $xTotal $yKlist #gd line $gd_out $color(Klist) [expr $xTotal-1] $yKlist [expr $xTotal+1] $yKlist #gd line $gd_out $color(Klist) $xTotal [expr $yKlist-1] $xTotal [expr $yKlist+1] } #puts "if {$yVlist!=404} " if {$yVlist!="405"} { gd line $gd_out $color(Vlist) $xTotal [expr $FieldY+5] $xTotal $yVlist #gd line $gd_out $color(Vlist) [expr $xTotal-1] $yVlist [expr $xTotal+1] $yVlist #gd line $gd_out $color(Vlist) $xTotal [expr $yVlist-1] $xTotal [expr $yVlist+1] } } } } close $fh } } if {$yTotalAvgNum>0} { if {$yTotalAvgNum<288} { set AddX [expr $FieldX-(($fontsize*15)+8)] } {set AddX 0} #if {$yTotalAvgNum>4+($fontsize*20)} {set PosX [exür int($yTotalAvgNum/$StepX)]} {set PosX [expr 4+($fontsize*20)]} set PosX [expr int($yTotalAvgNum/$StepX)+5] set LimitAvg [expr int($yLimitAvgTot./$yTotalAvgNum+0.5)] if {$LimitAvg>$lLimit} {set tend " v"} elseif {$LimitAvg<$lLimit} {set tend " ^"} {set tend " -"} set LimitTend $tend set opAvg [expr int($yOPAvgTot./$yTotalAvgNum+0.5)] if {$opAvg>$lOP} {set tend " v"} elseif {$opAvg<$lOP} {set tend " ^"} {set tend " -"} set opTend $tend #gdtext $gd_out $color(aOP) $font $fontsize 0 [expr $AddX+5] [expr $FieldY-int($opAvg*$StepY)+($fontsize*2-6)] "Average OP [format %.2f [expr $yOPAvgTot/$yTotalAvgNum.]]" set UserAvg [expr int($yUserAvgTot./$yTotalAvgNum+0.5)] if {$UserAvg>$lUser} {set tend " v"} elseif {$UserAvg<$lUser} {set tend " ^"} {set tend " -"} set UserTend $tend #gdtext $gd_out $color(User) $font $fontsize 0 [expr $AddX+5] [expr $FieldY-int($UserAvg*$StepY)+($fontsize*2-6)] "Average User [format %.2f [expr $yUserAvgTot/$yTotalAvgNum.]]" set VoiceAvg [expr int($yVoiceAvgTot./$yTotalAvgNum+0.5)] if {$VoiceAvg>$lVoice} {set tend " v"} elseif {$VoiceAvg<$lVoice} {set tend " ^"} {set tend " -"} set VoiceTend $tend #gdtext $gd_out $color(Voice) $font $fontsize 0 [expr $AddX+5] [expr $FieldY-int($VoiceAvg*$StepY)+($fontsize*2-6)] "Average Voice [format %.2f [expr $yVoiceAvgTot/$yTotalAvgNum.]]" set InvisAvg [expr int($yInvisAvgTot./$yTotalAvgNum+0.5)] if {$InvisAvg>$lInvis} {set tend " v"} elseif {$InvisAvg<$lInvis} {set tend " ^"} {set tend " -"} set InvisTend $tend #gdtext $gd_out $color(Invis) $font $fontsize 0 [expr $AddX+5] [expr $FieldY-int($InvisAvg*$StepY)+($fontsize*2-6)] "Average Invisibles [format %.2f [expr $yInvisAvgTot/$yTotalAvgNum.]]" set Avg [expr int($yTotalAvgTot./$yTotalAvgNum+0.5)] if {$Avg>$lTotal} {set tend " v"} elseif {$Avg<$lTotal} {set tend " ^"} {set tend " -"} set TotalTend $tend #gdtext $gd_out $color(aTotal) $font $fontsize 0 [expr $AddX+5] [expr $FieldY-int($Avg*$StepY)+($fontsize*2-6)] "Average [format %.2f [expr $yTotalAvgTot/$yTotalAvgNum.]]" for {set i 1} {$i<=[expr $FieldX/$StepX]} {set i [expr $i+($StepX/2)]} { if {[expr int($i) & 1]=="1" && [expr int($i) & 2]=="2"} { gd line $gd_out $color(aLimit) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($LimitAvg*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($LimitAvg*$StepY)-1] gd line $gd_out $color(aLimit) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($LimitAvg*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($LimitAvg*$StepY)+1] gd line $gd_out $color(aUser) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($UserAvg*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($UserAvg*$StepY)-1] gd line $gd_out $color(aUser) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($UserAvg*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($UserAvg*$StepY)+1] gd line $gd_out $color(aOP) [expr int($i*$StepX)-2] [expr ($FieldY+5)-int($opAvg*$StepY)+2] [expr int($i*$StepX)+2] [expr ($FieldY+5)-int($opAvg*$StepY)-2] gd line $gd_out $color(aOP) [expr int($i*$StepX)-2] [expr ($FieldY+5)-int($opAvg*$StepY)-2] [expr int($i*$StepX)+2] [expr ($FieldY+5)-int($opAvg*$StepY)+2] gd line $gd_out $color(aInvis) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($InvisAvg*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($InvisAvg*$StepY)-1] gd line $gd_out $color(aInvis) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($InvisAvg*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($InvisAvg*$StepY)+1] gd line $gd_out $color(aVoice) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($VoiceAvg*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($VoiceAvg*$StepY)-1] gd line $gd_out $color(aVoice) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($VoiceAvg*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($VoiceAvg*$StepY)+1] gd line $gd_out $color(aTotal) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Avg*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Avg*$StepY)-1] gd line $gd_out $color(aTotal) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Avg*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Avg*$StepY)+1] if {[expr int($i) & 4]=="4"} { gd line $gd_out $color(pUser) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(User)*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(User)*$StepY)-1] gd line $gd_out $color(pUser) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(User)*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(User)*$StepY)+1] gd line $gd_out $color(pOP) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(OP)*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(OP)*$StepY)-1] gd line $gd_out $color(pOP) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(OP)*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(OP)*$StepY)+1] gd line $gd_out $color(pInvis) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(Invis)*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(Invis)*$StepY)-1] gd line $gd_out $color(pInvis) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(Invis)*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(Invis)*$StepY)+1] gd line $gd_out $color(pVoice) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(Voice)*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(Voice)*$StepY)-1] gd line $gd_out $color(pVoice) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(Voice)*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(Voice)*$StepY)+1] gd line $gd_out $color(pTotal) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(Total)*$StepY)+1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(Total)*$StepY)-1] gd line $gd_out $color(pTotal) [expr int($i*$StepX)-1] [expr ($FieldY+5)-int($Peak(Total)*$StepY)-1] [expr int($i*$StepX)+1] [expr ($FieldY+5)-int($Peak(Total)*$StepY)+1] } } } if $Facts { #puts "Write facts" gdtext $gd_out $color(lgrey) $font $fontsize 0 8 [expr int(((($FieldY./$StepY)/100.)*($fontsize*3)))] "Peaks: Total $Peak(Total), OP: $Peak(OP), Voice: $Peak(Voice), User: $Peak(User), Invisible: $Peak(Invis)" gdtext $gd_out $color(lgrey) $font $fontsize 0 8 [expr int(((($FieldY./$StepY)/100.)*($fontsize*4)))] "Actual: Total $lTotal, OP: $lOP, Voice: $lVoice, User: $lUser, Invisible: $lInvis" gdtext $gd_out $color(lgrey) $font $fontsize 0 8 [expr int(((($FieldY./$StepY)/100.)*($fontsize*5)))] "Average: Total [format %.2f [expr $yTotalAvgTot/$yTotalAvgNum.]], OP: [format %.2f [expr $yOPAvgTot/$yTotalAvgNum.]], Voice: [format %.2f [expr $yVoiceAvgTot/$yTotalAvgNum.]], User: [format %.2f [expr $yUserAvgTot/$yTotalAvgNum.]], Invisible: [format %.2f [expr $yInvisAvgTot/$yTotalAvgNum.]]" } { #puts "Don't Write facts" gdtext $gd_out $color(lgrey) $font $fontsize 0 8 [expr int(((($FieldY./$StepY)/100.)*($fontsize*4)))] "Average: Total [format %.2f [expr $yTotalAvgTot/$yTotalAvgNum.]], OP: [format %.2f [expr $yOPAvgTot/$yTotalAvgNum.]], Voice: [format %.2f [expr $yVoiceAvgTot/$yTotalAvgNum.]], User: [format %.2f [expr $yUserAvgTot/$yTotalAvgNum.]], Invisible: [format %.2f [expr $yInvisAvgTot/$yTotalAvgNum.]]" } if {1} { #puts " '$LimitTend' '$UserTend' '$opTend' $InvisTend $VoiceTend $TotalTend Py $PosY " switch -exact $opTend {" ^" {set PosY 3} " v" {set PosY 8} default {set PosY 4}} gdtext $gd_out $color(OP) $font $fontsize 0 [expr ($PosX)] [expr $PosY+$yOP] "$opTend O:$lOP" switch -exact $LimitTend {" ^" {set PosY 3} " v" {set PosY 8} default {set PosY 4}} gdtext $gd_out $color(Limit) $font $fontsize 0 [expr ($PosX)] [expr $PosY+$yLimit] "$LimitTend L:$lLimit" switch -exact $UserTend {" ^" {set PosY 3} " v" {set PosY 8} default {set PosY 4}} gdtext $gd_out $color(User) $font $fontsize 0 [expr ($PosX)] [expr $PosY+$yUser] "$UserTend U:$lUser" switch -exact $InvisTend {" ^" {set PosY 3} " v" {set PosY 8} default {set PosY 4}} gdtext $gd_out $color(Invis) $font $fontsize 0 [expr ($PosX)] [expr $PosY+$yInvis] "$InvisTend I:$lInvis" switch -exact $VoiceTend {" ^" {set PosY 3} " v" {set PosY 8} default {set PosY 4}} gdtext $gd_out $color(Voice) $font $fontsize 0 [expr ($PosX)] [expr $PosY+$yVoice] "$VoiceTend V:$lVoice" switch -exact $TotalTend {" ^" {set PosY 3} " v" {set PosY 8} default {set PosY 4}} gdtext $gd_out $color(Total) $font $fontsize 0 [expr ($PosX)] [expr $PosY+$yTotal] "$TotalTend T:$lTotal" } } set fh [open "$ImageFile" w]; gd writePNG $gd_out $fh #gd writePNG $but2 $fh; close $fh; } set SearchFolder "/home/berlin/etc/data" set files [lsort [glob $SearchFolder/day.Berlin.*]] if {$::argv!="cron"} { } #set files [lsort [glob $SearchFolder/day.WebChat.*]] if {$::argv=="cron"} { set files [lrange $files end-1 end] #if {$::argv=="cronrrd"} { set files [lindex $files end] } } if {$::argv=="cronrrd" || $::argv=="cronrrdweek" || $::argv=="cronrrdall"} { rrdCreateDB } if {$::argv=="rrdgraph"} { set files [lrange $files end-1 end] } if {$::argv=="cronrrd"} { set files [lrange $files end-1 end] } if {$::argv=="cronrrdweek"} { set files [lrange $files end-8 end] } puts -nonewline "File:" foreach file $files { set getdate [split $file .] set ImageFile "/home/berlin/public_html/html/picz/Test.day.[lindex $getdate 1].[lindex $getdate 2].[lindex $getdate 3].[lindex $getdate 4].png" puts -nonewline " [lindex $getdate 2].[lindex $getdate 3].[lindex $getdate 4]" flush stdout if {$::argv=="rrdgraph"} { rrdDayFile $file } elseif {$::argv=="cronrrd" || $::argv=="cronrrdweek" || $::argv=="cronrrdall"} { rrdDayFile $file } { if {$file == [lindex $files end]} { #puts "DayFile $file $ImageFile 1" DayFile $file $ImageFile 1 } { #puts "DayFile $file $ImageFile" DayFile $file $ImageFile } } } if {$::argv=="rrdgraph"} { rrdDayFileGraph [clock sec] } puts " - done" set ImageFile /home/berlin/public_html/html/picz/Test.png #DayFile "" $ImageFile } #puts "$argc $argv" puts "required [expr ([set endtime [clock clicks]]-$starttime)/1000000.] sec/[expr ($endtime-$starttime)/1000.] ms to execute.." cd $oldcd