proc processSSHLine {arrayName line} { upvar $arrayName count if {[set userpos [lsearch $line user]] > 8} { incr userpos set userName [lindex $line $userpos] incr count(ssh-id,$userName) } } proc processLine {arrayName line} { global State upvar $arrayName count set cmd [lindex $line 4] set cmdList [split $cmd {][}] lassign $cmdList name pid if {$name eq "sshd"} { processSSHLine count $line } if {$pid eq ""} { incr count($name) } elseif {[lsearch $State(pidList,$name) $pid] < 0} { incr count($name) lappend State(pidList,$name) $pid } } set if [open "messages.1" r] set data [read $if] close $if array set State {pidList,sshd {} pidList,named {} pidList,ntpd {}} foreach line [split $data \n] { processLine count $line } parray count