I'll try that again (its is very early and we lost the footie last night)

Try this for your monitoring:

      CRT "X906944 Start ":OCONV(DATE(),'D2'):" ":OCONV(TIME(),'MTS')
      OPEN '',"x906944" TO FL ELSE STOP "NO FILE"
      EOT = ''
      USERID = ''
      EXECUTE "! cat /etc/passwd " CAPTURING ALL.THE.USERS
      NO.USER = DCOUNT(ALL.THE.USERS,@FM)
      FOR XX = 1 TO NO.USER
         USERID = FIELD(ALL.THE.USERS<XX>,':',1)
         IF USERID NE '' THEN
            FOUND = ''
            C="! users"
            EXECUTE C CAPTURING R
            CONVERT ' ' TO @FM IN R
            N=DCOUNT(R,@FM)
            FOR I = 1 TO N
               L = R<I>
               IF L = USERID THEN
                  FOUND = 1
                  EXIT
               END
            NEXT
            READ REC FROM FL,USERID:'*':DATE() THEN
            END ELSE
               REC = ''
            END
            LASTPOS = DCOUNT(REC<1>,@VM)
            BEGIN CASE
               CASE REC<1,LASTPOS> = "OFF" AND FOUND
                  REC<2,-1> = OCONV(TIME(),'MTS')
                  REC<1,-1>='ON'
                  REC<3,-1>=OCONV(DATE(),'D4/')
                  GOSUB UPDATETIMES
                  WRITE REC ON FL,USERID:'*':DATE()
               CASE REC<1,LASTPOS> = "" AND FOUND
                  REC<2,-1> = OCONV(TIME(),'MTS')
                  REC<1,-1>='ON'
                  REC<3,-1>=OCONV(DATE(),'D4/')
                  GOSUB UPDATETIMES
                  WRITE REC ON FL,USERID:'*':DATE()
               CASE REC<1,LASTPOS> = 'OFF' AND NOT(FOUND)
               CASE REC<1,LASTPOS> = 'ON' AND FOUND
                  GOSUB UPDATETIMES
                  WRITE REC ON FL,USERID:'*':DATE()
               CASE REC<1,LASTPOS> = 'ON' AND NOT(FOUND)
                  REC<2,-1> = OCONV(TIME(),'MTS')
                  REC<1,-1>='OFF'
                  REC<3,-1>=OCONV(DATE(),'D4/')
                  WRITE REC ON FL,USERID:'*':DATE()
               CASE 1
            END CASE
         END
      NEXT XX
      CRT "X906944 End ":OCONV(DATE(),'D2'):" ":OCONV(TIME(),'MTS')
      RETURN
UPDATETIMES:
      CMD = "! ps -ef | grep ":USERID:" | grep -v grep "
      EXECUTE CMD CAPTURING PIDLIST
      NO.PIDS = DCOUNT(PIDLIST,@VM)
      FOR AA = 1 TO NO.PIDS
         LNE = TRIM(PIDLIST<AA>)
         PID = FIELD(LNE,' ',2)
         TME = FIELD(LNE,' ',7)
         TME = ICONV(TME,'MT')
         LOCATE PID IN REC<4,1> BY 'AR' SETTING PIDPOS THEN
            REC<5,PIDPOS> = TME
            REC<6,PIDPOS> = TIME()
         END ELSE
            REC<4,PIDPOS> = PID
            REC<5,PIDPOS> = TME
            REC<6,PIDPOS> = TIME()
         END
      NEXT AA
      RETURN
   END

______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email 
______________________________________________________________________
-------
u2-users mailing list
[EMAIL PROTECTED]
To unsubscribe please visit http://listserver.u2ug.org/

Reply via email to