Example #1
0
        private UnixProcessInfo parseProcessInfo(string line, DateTime baseTime)
        {
            UnixProcessInfo retInfo = new UnixProcessInfo();
            char[] elemseps = { ' ', '\t' };
            string[] ffields = line.Split(elemseps, 9, StringSplitOptions.RemoveEmptyEntries);
            if (ffields.GetUpperBound(0) < 8)
                return null;
            uint pid, ppid;
            int prio;
            if (!uint.TryParse(ffields[0], out pid))
                return null;
            if (!uint.TryParse(ffields[2], out ppid))
                return null;
            if (!int.TryParse(ffields[3], out prio))
                return null;

            retInfo.Pid = pid;
            retInfo.PPid = ppid;
            retInfo.Command = ffields[8];
            retInfo.Prio = prio;
            if (ffields[4] != ffields[0])
                retInfo.Class = ffields[4];
            else                                    // No support for "class", so we...
                retInfo.Class = "Unclassified";     // called ps with the pid keyword repeated
            retInfo.Tty = ffields[7];
            retInfo.User = ffields[1];
            retInfo.CpuTime = psTime2Secs(ffields[5]);
            retInfo.StartTime = baseTime.AddSeconds(-psTime2Secs(ffields[6]));

            return retInfo;
        }
        public ProcessItemTypeGeneratorTests()
        {
            this.OvalDefinitionsSample = ProbeHelper.GetFakeOvalDefinitions("definitions_all_unix.xml");

            var processInfo1 = new UnixProcessInfo() { Command = "http", Pid = 20, PPid = 0, Tty = "tty", User = "******" };
            var processInfo2 = new UnixProcessInfo() { Command = "ftp", Pid = 21, PPid = 20, Tty = "tty", User = "******" };
            var processInfo3 = new UnixProcessInfo() { Command = "ssh", Pid = 22, PPid = 0, Tty = "tty", User = "******" };
            var processInfo4 = new UnixProcessInfo() { Command = "named", Pid = 23, PPid = 0, Tty = "tty", User = "******" };

            this.FakeProcessInfoList = new UnixProcessInfo[] { processInfo1, processInfo2, processInfo3, processInfo4 }.ToList();
        }
Example #3
0
 private OVAL.SystemCharacteristics.Unix.process_item CreateProcessItem(UnixProcessInfo targetProcess)
 {
     return new OVAL.SystemCharacteristics.Unix.process_item()
     {
         command = OvalHelper.CreateItemEntityWithStringValue(targetProcess.Command),
         pid = OvalHelper.CreateItemEntityWithIntegerValue(targetProcess.Pid.ToString()),
         ppid = OvalHelper.CreateItemEntityWithIntegerValue(targetProcess.PPid.ToString()),
         priority = OvalHelper.CreateItemEntityWithIntegerValue(targetProcess.Prio.ToString()),
         tty = OvalHelper.CreateItemEntityWithStringValue(targetProcess.Tty),
         user_id = OvalHelper.CreateItemEntityWithIntegerValue(targetProcess.User),
         start_time = new OVAL.SystemCharacteristics.EntityItemStringType() { status = OVAL.SystemCharacteristics.StatusEnumeration.notcollected },
         exec_time = new OVAL.SystemCharacteristics.EntityItemStringType() { status = OVAL.SystemCharacteristics.StatusEnumeration.notcollected },
         ruid = new OVAL.SystemCharacteristics.EntityItemIntType() { status = OVAL.SystemCharacteristics.StatusEnumeration.notcollected },
         scheduling_class = new OVAL.SystemCharacteristics.EntityItemStringType() { status = OVAL.SystemCharacteristics.StatusEnumeration.notcollected }
     };
 }
Example #4
0
        private UnixProcessInfo parseProcessInfo(string line, DateTime baseTime)
        {
            UnixProcessInfo retInfo = new UnixProcessInfo();

            char[]   elemseps = { ' ', '\t' };
            string[] ffields  = line.Split(elemseps, 9, StringSplitOptions.RemoveEmptyEntries);
            if (ffields.GetUpperBound(0) < 8)
            {
                return(null);
            }
            uint pid, ppid;
            int  prio;

            if (!uint.TryParse(ffields[0], out pid))
            {
                return(null);
            }
            if (!uint.TryParse(ffields[2], out ppid))
            {
                return(null);
            }
            if (!int.TryParse(ffields[3], out prio))
            {
                return(null);
            }

            retInfo.Pid     = pid;
            retInfo.PPid    = ppid;
            retInfo.Command = ffields[8];
            retInfo.Prio    = prio;
            if (ffields[4] != ffields[0])
            {
                retInfo.Class = ffields[4];
            }
            else                                    // No support for "class", so we...
            {
                retInfo.Class = "Unclassified";     // called ps with the pid keyword repeated
            }
            retInfo.Tty       = ffields[7];
            retInfo.User      = ffields[1];
            retInfo.CpuTime   = psTime2Secs(ffields[5]);
            retInfo.StartTime = baseTime.AddSeconds(-psTime2Secs(ffields[6]));

            return(retInfo);
        }