Beispiel #1
0
    def get(self, request, format=None):
        psMemCpuInfo = {}

        commands_MEM = "ps -aux|sort -k4nr|grep -v 'USER'|head -n 1"
        commands_CPU = "ps -aux|sort -k3nr|grep -v 'USER'|head -n 1"

        try:
            ps_MEM_info = functions.launchcmd(commands_MEM).readline()
            ps_CPU_info = functions.launchcmd(commands_CPU).readline()
            logger.debug("ps_MEM_info ===> " + ps_MEM_info)
            logger.debug("ps_CPU_info ===> " + ps_CPU_info)

            psMemCpuInfo["psmeminfo"] = format_process_info(ps_MEM_info)
            if psMemCpuInfo["psmeminfo"]["pid"].isdigit() and psutil.pid_exists(int(psMemCpuInfo["psmeminfo"]["pid"])):
                psMemCpuInfo["psmeminfo"]["name"] = psutil.Process(int(psMemCpuInfo["psmeminfo"]["pid"])).name()
            else:
                psMemCpuInfo["psmeminfo"]["name"] = ""
            psMemCpuInfo["pscpuinfo"] = format_process_info(ps_CPU_info)
            if psMemCpuInfo["pscpuinfo"]["pid"].isdigit() and psutil.pid_exists(int(psMemCpuInfo["pscpuinfo"]["pid"])):
                psMemCpuInfo["pscpuinfo"]["name"] = psutil.Process(int(psMemCpuInfo["pscpuinfo"]["pid"])).name()
            else:
                psMemCpuInfo["pscpuinfo"]["name"] = ""
        except Exception, exception:
            logger.error("PsCpuMemInfo error! ===> " + exception.message)
            return Response(psMemCpuInfo, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Beispiel #2
0
    def get_udp_info(cls):
        """
        get udp info
        :return:
        """

        udp_info = {}

        try:
            logger.debug("udp begin:======>")
            rtinfo = functions.launchcmd('sar -n UDP 1 1').readlines()
            logger.debug("commands finished! ")
            if rtinfo:
                continue_falg = True
                for item in rtinfo:
                    if continue_falg:
                        if "idgm" in item:
                            continue_falg = False
                        continue
                    tmplist = item.split()
                    udp_info["time"] = tmplist[0]
                    udp_info["idgm/s"] = tmplist[1]
                    udp_info["odgm/s"] = tmplist[2]
                    udp_info["noport/s"] = tmplist[3]
                    udp_info["idgmerr/s"] = tmplist[4]
                    break
        except IOError, e:
            logger.error(e.message, e)
            return False, udp_info
Beispiel #3
0
    def get_socket_info(cls):
        """
        get socket info
        :return:
        """
        socket_info = {}

        try:
            logger.debug("socket begin:======>")
            rtinfo = functions.launchcmd('sar -n SOCK 1 1').readlines()
            logger.debug("commands finished! ")
            if rtinfo:
                continue_falg = True
                for item in rtinfo:
                    if continue_falg:
                        if "totsck" in item:
                            continue_falg = False
                        continue
                    tmplist = item.split()
                    socket_info["time"] = tmplist[0]
                    socket_info["totsck"] = tmplist[1]
                    socket_info["tcpsck"] = tmplist[2]
                    socket_info["udpsck"] = tmplist[3]
                    socket_info["rawsck"] = tmplist[4]
                    socket_info["ip-frag"] = tmplist[5]
                    socket_info["tcp-tw"] = tmplist[6]
                    break
        except IOError, e:
            logger.error(e.message, e)
            return False, socket_info
Beispiel #4
0
    def get_numastat_info(cls):
        """
        get numastat info
        :return:
        """

        numastat_list = []
        numastat = []

        try:
            rtninfo = functions.launchcmd('numastat').readlines()

            for item in rtninfo:
                items = item.split()
                numastat.append(items)
            logger.debug(numastat)
            logger.debug(len(numastat[0]))
            for i in range(0, len(numastat[0])):
                numastat_info = {}
                logger.debug(i)
                numastat_info["name"] = numastat[0][i]
                numastat_info["numa_hit"] = numastat[1][i + 1]
                numastat_info["numa_miss"] = numastat[2][i + 1]
                numastat_info["numa_foreign"] = numastat[3][i + 1]
                numastat_info["interleave_hit"] = numastat[4][i + 1]
                numastat_info["local_node"] = numastat[5][i + 1]
                numastat_info["other_node"] = numastat[6][i + 1]
                numastat_list.append(numastat_info)

            # numastat_info["numastat_list"] = numastat_list
        except IOError:
            return False, numastat_list

        return True, numastat_list
Beispiel #5
0
    def get_mem_info(cls, keys):
        """
        get memory info
        :param keys: the items
        :return:
        """

        virtual_memory = {}

        try:
            freem = functions.launchcmd('free').readlines()
            shared = int(strip(freem[1].split()[4])) * 1024
            rtinfo = psutil.virtual_memory()
            if rtinfo:
                rtinfo_list = str(rtinfo).replace("svmem(",
                                                  "").replace(")",
                                                              "").split(",")
                for item in rtinfo_list:
                    items = item.split("=")

                    if "all" in keys or [] == keys:
                        virtual_memory[strip(items[0])] = strip(items[1])
                    elif strip(items[0]) in keys:
                        virtual_memory[strip(items[0])] = strip(items[1])

            if "all" in keys or "shared" in keys or [] == keys:
                virtual_memory["shared"] = shared

        except IOError:
            return False, virtual_memory

        return True, virtual_memory
Beispiel #6
0
    def getcapacity(cls):
        """
        Get all of the disk capacity information.
        :return: boolean, dict
        For getting the physical disk information, we just launch the command as
        "lsblk".
        """
        ni_dict = {}
        ni_list = []

        ni_dict[ifconfig.DISK_KEY_LIST] = ni_list
        cmdout = functions.launchcmd(ifconfig.DISKINFO_CMDLINE)

        if cmdout:
            for line in cmdout:
                # print(line)
                matched_groups = re.match(ifconfig.DISK_INFO_PATTERN, line)
                if matched_groups:
                    # print(matched_groups.groups())
                    ni_list.append({
                        ifconfig.DISK_KEY_NAME:
                        matched_groups.group(1),
                        ifconfig.DISK_KEY_CAP:
                        matched_groups.group(2),
                        ifconfig.DISK_KEY_TYPE:
                        matched_groups.group(3)
                    })
                else:
                    return False, None

        return True, ni_dict
Beispiel #7
0
    def get(self, request, itemid, format=None):
        """
        Get ps list.
        """
        psInfo = []
        commands = ""
        num = 10
        if request.GET.get("num"):
            num = request.GET["num"]

        if "cpu" == itemid:
            commands = "pidstat | sort -k7nr |grep -v 'PID' | head -n " + str(num)
        else:
            commands = "ps -aux|sort -k4nr|grep -v 'USER'|head -n " + str(num)

        try:
            ps_info = functions.launchcmd(commands).readlines()

            for psitem in ps_info:
                format_iteminfo = []
                if "cpu" == itemid:
                    format_iteminfo = format_pidstat_info(psitem)
                else:
                    format_iteminfo = format_process_info(psitem)

                if format_iteminfo["pid"].isdigit() and psutil.pid_exists(int(format_iteminfo["pid"])):
                    format_iteminfo["name"] = psutil.Process(int(format_iteminfo["pid"])).name()
                else:
                    format_iteminfo["name"] = ""
                psInfo.append(format_iteminfo)
        except Exception, exception:
            logger.error("PsInfo error! ===> " + exception.message)
Beispiel #8
0
    def get_slab_info(cls, name, keys):
        """
        get slab info
        :param keys: the items
        :return:
        """

        slab_list = []

        try:
            logger.debug("slabtop begin:======>")
            rtinfo = functions.launchcmd('slabtop -o').readlines()
            logger.debug("commands finished! length=")
            logger.debug(len(rtinfo))
            if rtinfo:
                continue_falg = True
                if "" == name:
                    for item in rtinfo:
                        slab_info = {}
                        if continue_falg:
                            if "OBJS" in item:
                                continue_falg = False
                            continue
                        slab_info["name"] = item.split()[7]
                        slab_info["objs"] = item.split()[0]
                        slab_info["slabs"] = item.split()[4]
                        slab_info["obj_slab"] = item.split()[5]
                        slab_info["active"] = item.split()[1]
                        slab_info["obj_size"] = item.split()[3]
                        slab_info["use"] = item.split()[2]
                        slab_list.append(slab_info)
                    return True, slab_list
                else:
                    slab_info = {}
                    slab_info_temp = {}
                    for item in rtinfo[7:]:

                        if name == item.split()[7]:
                            slab_info_temp["name"] = item.split()[7]
                            slab_info_temp["objs"] = item.split()[0]
                            slab_info_temp["slabs"] = item.split()[4]
                            slab_info_temp["obj_slab"] = item.split()[5]
                            slab_info_temp["active"] = item.split()[1]
                            slab_info_temp["obj_size"] = item.split()[3]
                            slab_info_temp["use"] = item.split()[2]
                            break
                    if "all" in keys:
                        slab_list.append(slab_info_temp)
                        return True, slab_info_temp
                    for key in keys:
                        slab_info[key] = slab_info_temp[key]

                    return True, slab_info

        except IOError:
            return False, slab_list

        return True, slab_list
Beispiel #9
0
    def get_throughput_info(cls):
        """
        get throughput info
        :return:
        """

        throughput_list = {}

        try:
            logger.debug("throughput begin:======>")
            rtinfo = functions.launchcmd('sar -n ALL 1 1').readlines()
            logger.debug("commands finished! ")
            if rtinfo:
                continue_falg = True
                falg = True
                for item in rtinfo:
                    throughput_info = {}
                    if continue_falg:
                        if "IFACE" in item:
                            continue_falg = False
                        continue
                    if "rxerr" in item:
                        falg = False
                        continue
                    if "call" in item:
                        break
                    tmplist = item.split()
                    if tmplist is None or tmplist == []:
                        continue
                    if falg:
                        throughput_info["time"] = tmplist[0]
                        throughput_info["name"] = tmplist[1]
                        throughput_info["rxpck/s"] = tmplist[2]
                        throughput_info["txpck/s"] = tmplist[3]
                        throughput_info["rxkB/s"] = tmplist[4]
                        throughput_info["txkB/s"] = tmplist[5]
                        throughput_info["rxcmp/s"] = tmplist[6]
                        throughput_info["txcmp/s"] = tmplist[7]
                        throughput_info["rxmcst/s"] = tmplist[8]

                        throughput_list[tmplist[1]] = throughput_info
                    else:
                        throughput_info = throughput_list[tmplist[1]]
                        throughput_info["rxerr/s"] = tmplist[2]
                        throughput_info["txerr/s"] = tmplist[3]
                        throughput_info["coll/s"] = tmplist[4]
                        throughput_info["rxdrop/s"] = tmplist[5]
                        throughput_info["txdrop/s"] = tmplist[6]
                        throughput_info["txcarr/s"] = tmplist[7]
                        throughput_info["rxfram/s"] = tmplist[8]
                        throughput_info["rxfifo/s"] = tmplist[9]
                        throughput_info["txfifo/s"] = tmplist[10]
                        throughput_list[tmplist[1]] = throughput_info

        except IOError, e:
            logger.error(e.message, e)
            return False, throughput_list
Beispiel #10
0
    def get(self, request, format=None):
        """
        Get pci list.
        """
        # Add your code here.

        pci_devices = functions.launchcmd('lspci').readlines()
        pci_info = []
        for pci_device in pci_devices:
            pci_info.append(pci_device)
        return Response(pci_info, status=status.HTTP_200_OK)
Beispiel #11
0
 def get(self, request, format=None):
     """
     Get usb list.
     """
     # Add your code here.
     # usbdevices=os.popen('lsusb').readlines()
     usb_devices = functions.launchcmd('lsusb').readlines()
     usb_info = []
     for usb_device in usb_devices:
         usb_info.append(usb_device)
     return Response(usb_info, status=status.HTTP_200_OK)
Beispiel #12
0
    def get_iptrafic_info(cls):
        """
        get iptrafic info
        :return:
        """

        iptrafic_info = {}

        try:
            logger.debug("iptrafic begin:======>")
            rtinfo = functions.launchcmd('sar -n ALL 1 1').readlines()
            logger.debug("commands finished! ")
            if rtinfo:
                continue_falg = True
                falg = True
                for item in rtinfo:
                    if continue_falg:
                        if "irec" in item:
                            continue_falg = False
                        continue
                    if "ihdrerr" in item:
                        falg = False
                        continue
                    if "imsg" in item:
                        break
                    tmplist = item.split()
                    if tmplist is None or tmplist == []:
                        continue
                    if falg:
                        iptrafic_info["time"] = tmplist[0]
                        iptrafic_info["irec/s"] = tmplist[1]
                        iptrafic_info["fwddgm/s"] = tmplist[2]
                        iptrafic_info["idel/s"] = tmplist[3]
                        iptrafic_info["orq/s"] = tmplist[4]
                        iptrafic_info["asmrq/s"] = tmplist[5]
                        iptrafic_info["asmok/s"] = tmplist[6]
                        iptrafic_info["fragok/s"] = tmplist[7]
                        iptrafic_info["fragcrt/s"] = tmplist[8]
                    else:
                        iptrafic_info["ihdrerr/s"] = tmplist[1]
                        iptrafic_info["iadrerr/s"] = tmplist[2]
                        iptrafic_info["iukwnpr/s"] = tmplist[3]
                        iptrafic_info["idisc/s"] = tmplist[4]
                        iptrafic_info["odisc/s"] = tmplist[5]
                        iptrafic_info["onort/s"] = tmplist[6]
                        iptrafic_info["asmf/s"] = tmplist[7]
                        iptrafic_info["fragf/s"] = tmplist[8]

        except IOError, e:
            logger.error(e.message, e)
            return False, iptrafic_info
Beispiel #13
0
    def get_page_info(cls, keys):
        """
        get page info
        :param keys: the items
        :return:
        """

        page_memory = {}
        rtn_page_memory = {}

        try:
            rtinfo = functions.launchcmd('sar -B 1 1').readlines()
            if rtinfo[-1]:
                page_list = rtinfo[-1].split()
                page_memory["pgpgin"] = page_list[1]
                page_memory["pgpgout"] = page_list[2]
                page_memory["fault"] = page_list[3]
                page_memory["majflt"] = page_list[4]
                page_memory["pgfree"] = page_list[5]
                page_memory["pgsteal"] = page_list[8]

            rtinfo_other = functions.launchcmd('sar -R 1 1').readlines()
            if rtinfo_other[-1]:
                page_list_other = rtinfo_other[-1].split()
                page_memory["bufpg"] = page_list_other[2]
                page_memory["campg"] = page_list_other[3]

            if "all" in keys or [] == keys:
                return True, page_memory
            else:
                for key in keys:
                    rtn_page_memory[key] = page_memory[key]
                return True, rtn_page_memory

        except IOError:
            return False, page_memory

        return True, page_memory
Beispiel #14
0
    def apply_modification(cls):
        """
        Apply all of the modification.
        :return:
        """
        cmdstr = "/sbin/service iptables save && /sbin/service ip6tables save  \
                 && systemctl start iptables.service && systemctl start ip6tables.service"
        cmdout = functions.launchcmd(cmdstr)

        if cmdout:
            for line in cmdout:
                pass

        return True, const.FW_SUCCEEDED
Beispiel #15
0
    def get(self, request, format=None):

        disk_ps_info = {}

        try:
            logger.debug("diskinfo begin--------------")
            net_info_list = functions.launchcmd('iotop -P -b -n 1 | head -n 4').readlines()
            logger.debug("net_info_list -1 ====== " + net_info_list[-1])
            disk_ps_info["psdiskinfo"] = net_info_list[-1].split()[0]
            logger.debug("psdiskinfo ===> " + disk_ps_info["psdiskinfo"])
            if disk_ps_info["psdiskinfo"].isdigit() and psutil.pid_exists(int(disk_ps_info["psdiskinfo"])):
                disk_ps_info["name"] = psutil.Process(int(disk_ps_info["psdiskinfo"])).name()
            else:
                disk_ps_info["name"] = ""
        except Exception, exception:
            logger.error("DiskIOInfo error!===>" + exception.message)
            return Response(disk_ps_info, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
Beispiel #16
0
    def get(self, request, format=None):
        """
        GET  sysInfo
        """

        sysinfo = {}

        # CPU core num
        proc_cpu_cores = functions.launchcmd(
            'cat /proc/cpuinfo | grep "processor" |wc -l').readline()
        # logging.debug("cpu_num = " + cpu_num)

        sysinfo["cpunum"] = int(proc_cpu_cores.strip())

        # install soft

        return Response(sysinfo, status=status.HTTP_200_OK)
Beispiel #17
0
    def enable_service(cls, enableflag):
        """
        Enable or disable firewall service according to enableflag.
        :param enableflag:
        :return:
        """
        cmdstr = "systemctl enable iptables.service && systemctl enable ip6tables.service "
        if not enableflag:
            cmdstr = "systemctl disable iptables.service && systemctl disable ip6tables.service"

        cmdout = functions.launchcmd(cmdstr)

        if cmdout:
            for line in cmdout:
                pass

        return True, const.FW_SUCCEEDED
Beispiel #18
0
    def deletelistinfo(cls, request, filename):
        """
        delete one tcpwrappers  rules
        :param request:
        :param foramt:
        :return:
        """

        filterfile = functions.launchcmd("cat " + filename).readlines()
        delete_rules = request.data.get("deleteinfo")

        delete_hostsinfo = []

        for daemonline in filterfile:

            # if the flag is true, then wirte this line to the file
            need_write = True
            rule_info = daemonline.replace(":",
                                           "").replace(" ",
                                                       "").replace(",", "")

            # find the lines that need write to the file
            for delete_info in delete_rules:
                delete_info = delete_info.replace(",", "").replace(" ",
                                                                   "").replace(
                                                                       ":", "")
                if strip(daemonline).startswith("#"):
                    need_write = True
                elif rule_info == delete_info:
                    need_write = False

            if need_write:
                delete_hostsinfo.append(daemonline)

            # if daemonline.find(delete_daemon) == -1:
            #     delete_hostsinfo.append(daemonline+'\n')

        if len(delete_hostsinfo):
            hosts_file = open(filename, 'w+')
            hosts_file.writelines(delete_hostsinfo)
            hosts_file.close()
        else:
            return 'error'

        return 'success'
Beispiel #19
0
    def get_tcp_info(cls):
        """
        get tcp info
        :return:
        """

        tcp_info = {}

        try:
            logger.debug("tcp begin:======>")
            rtinfo = functions.launchcmd('sar -n ALL 1 1').readlines()
            logger.debug("commands finished! ")
            if rtinfo:
                continue_falg = True
                falg = True
                for item in rtinfo:
                    if continue_falg:
                        if "active" in item:
                            continue_falg = False
                        continue
                    if "atmptf" in item:
                        falg = False
                        continue
                    if "idgm" in item:
                        break
                    tmplist = item.split()
                    if tmplist is None or tmplist == []:
                        continue
                    if falg:
                        tcp_info["time"] = tmplist[0]
                        tcp_info["active/s"] = tmplist[1]
                        tcp_info["passive/s"] = tmplist[2]
                        tcp_info["iseg/s"] = tmplist[3]
                        tcp_info["oseg/s"] = tmplist[4]
                    else:
                        tcp_info["atmptf/s"] = tmplist[1]
                        tcp_info["estres/s"] = tmplist[2]
                        tcp_info["retrans/s"] = tmplist[3]
                        tcp_info["isegerr/s"] = tmplist[4]
                        tcp_info["orsts/s"] = tmplist[5]
        except IOError, e:
            logger.error(e.message, e)
            return False, tcp_info
Beispiel #20
0
    def reset_all(cls):
        """
        Flush all of the firewall protocol items.
        :return:
        iptables --help
          --flush   -F [chain]		Delete all rules in  chain or all chains

        """
        cmdstr = "systemctl stop iptables.service && systemctl stop ip6tables.service \
                  && iptables --flush &&  ip6tables --flush \
                  && /sbin/service iptables save && /sbin/service ip6tables save \
                  && systemctl start iptables.service &&systemctl start ip6tables.service "

        cmdout = functions.launchcmd(cmdstr)

        if cmdout:
            for line in cmdout:
                pass

        return True, const.FW_SUCCEEDED
Beispiel #21
0
    def get_swap_info(cls, keys):
        """
        get swap info
        :param keys: the items
        :return:
        """

        swap_memory = {}

        try:
            rtinfo = psutil.swap_memory()
            if rtinfo:
                logger.debug("--------get swap memory info begin-------")
                rtinfo_list = str(rtinfo).replace("sswap(",
                                                  "").replace(")",
                                                              "").split(",")
                pg_in_out = functions.launchcmd('sar -W 1 1').readlines()
                logger.debug("cmd:sar -W 1 1 finished")
                for item in rtinfo_list:
                    items = item.split("=")
                    if ("all" in keys or [] == keys) and strip(
                            items[0]) in ("total", "used", "free"):
                        swap_memory[strip(items[0])] = strip(items[1])
                    elif strip(items[0]) in keys:
                        swap_memory[strip(items[0])] = strip(items[1])

                if "all" in keys or [] == keys:
                    swap_memory["pswpin"] = pg_in_out[-1].split()[1]
                    swap_memory["pswpout"] = pg_in_out[-1].split()[2]

                for key in keys:
                    if key == "pswpin":
                        swap_memory["pswpin"] = pg_in_out[-1].split()[1]
                    elif key == "pswpout":
                        swap_memory["pswpout"] = pg_in_out[-1].split()[2]

        except IOError:
            return False, swap_memory

        return True, swap_memory
Beispiel #22
0
def check_exist(rule):
    if rule is not None:
        filterfile = functions.launchcmd("cat /etc/exports").readlines()

        for daemonline in filterfile:
            # newrule = strip(rule) if rule.endswith('/') else "{}/".format(rule)
            # newfileline = strip(daemonline) if daemonline.endswith('/') else "{}/".format(daemonline)
            if strip(daemonline) == "":
                continue
            newrulelist = strip(rule).split()
            newfilerulelist = strip(daemonline).split()
            newrulelist[0] = strip(newrulelist[0]) if newrulelist[0].endswith(
                '/') else "{}/".format(newrulelist[0])
            newfilerulelist[0] = strip(
                newfilerulelist[0]) if newfilerulelist[0].endswith(
                    '/') else "{}/".format(newfilerulelist[0])
            newrule = " ".join(newrulelist).split('(')
            newfileline = " ".join(newfilerulelist).split('(')
            if daemonline.startswith('#') and strip(newrule[0]) == strip(
                    newfileline[0].replace('#', '')):
                return True
    return False
Beispiel #23
0
    def getlistinfo(cls, filename):
        """
        read info from sys
        :param filename:
        :return:
        """
        filterfile = functions.launchcmd('grep -v "^#" ' +
                                         filename).readlines()
        hostsinfo = []
        for t in filterfile:
            oneinfo = t.split(":", 2)
            if len(oneinfo) == 3:
                hostsinfo.append(oneinfo)
            elif len(oneinfo) == 2:
                oneinfo.append("")
                hostsinfo.append(oneinfo)
            elif len(oneinfo) == 1:
                oneinfo.append("")
                oneinfo.append("")
                hostsinfo.append(oneinfo)

        return hostsinfo
Beispiel #24
0
    def get(self, request, format=None):
        """
        GET  sysInfo
        """

        sysinfo = {}

        # kenal version
        # version = commands.getoutput('uname -r')
        # version = self.commoncmd('uname -r')
        version = functions.launchcmd('uname -r').readline().strip('\n')
        sysinfo["version"] = version

        # CPU info
        # cpuInfo = commands.getoutput('cat /proc/cpuinfo |grep "name" |cut -f2 -d: |uniq')
        # cpuinfo = self.commoncmd('cat /proc/cpuinfo |grep "name" |cut -f2 -d: |uniq')
        cpuinfo = functions.launchcmd('cat /proc/cpuinfo |grep "name" |cut -f2 -d: |uniq').readline().strip('\n')
        sysinfo["cpuInfo"] = cpuinfo

        # CPU load average
        # upTimeInfo = commands.getoutput('uptime')
        # uptimeinfo = self.commoncmd('uptime')
        uptimeinfo = functions.launchcmd('uptime').readline().strip('\n')
        loadaverage = uptimeinfo.split('average:')[1]
        sysinfo["loadAverage"] = loadaverage

        # memory info
        # freem = os.popen('free -m').readlines()
        freem = functions.launchcmd('free -m').readlines()
        for tempmen in freem[1:len(freem)]:
            men = tempmen.split()
            meninfo = {
                'name': men[0],
                'total': men[1],
                'used': men[2],
                'free': men[3]
            }
            sysinfo[men[0].split(':')[0]] = meninfo

        # hostname
        # hostname = self.commoncmd('uname -n')
        hostname = functions.launchcmd('uname -n').readline().strip('\n')
        sysinfo["hostname"] = hostname

        # sysversion
        if(os.path.exists("/etc/redhat-release")):
            sysversion = functions.launchcmd('cat /etc/redhat-release').readline().strip('\n')
        elif(os.path.exists("/etc/inspur-release")):
            sysversion = functions.launchcmd('cat /etc/inspur-release').readline().strip('\n')

        sysinfo["systemversion"] = sysversion

        # starttime
        # starttime = self.commoncmd('uptime -s')
        starttime = functions.launchcmd('uptime -s').readline().strip('\n')
        sysinfo["starttime"] = starttime

        # runtime
        # runtimestr = self.commoncmd('uptime -p')
        runtimestr = functions.launchcmd('uptime -p').readline().strip('\n')
        runtime = runtimestr[3:]
        sysinfo["runningtime"] = runtime

        # currenttime
        # currenttime = self.commoncmd('date +%Y-%m-%d\' \'%k:%M:%S')
        currenttime = functions.launchcmd('date +%Y-%m-%d\' \'%k:%M:%S').readline().strip('\n')
        sysinfo["currenttime"] = currenttime

        # disk info
        # disklines=os.popen('df -Th').readlines()
        disklines = functions.launchcmd('df -Th').readlines()
        diskinfo = []
        for diskline in disklines[1:len(disklines)]:
            onedisk = diskline.split()
            print onedisk
            oneDisk = {
                'Filesystem': onedisk[0],
                'Type': onedisk[1],
                'Size': onedisk[2],
                'Used': onedisk[3],
                'Avail': onedisk[4],
                'Usepersent': onedisk[5],
                'Mounted on': onedisk[6]
            }
            diskinfo.append(oneDisk)

        sysinfo["diskinfo"] = diskinfo

        # CPU core num
        cpu_num = functions.launchcmd('cat /proc/cpuinfo |grep "physical id" |sort | uniq|wc -l').readline()
        each_cpu_cores = functions.launchcmd('cat /proc/cpuinfo | grep "cpu cores"|cut -d: -f2|uniq').readline()
        proc_cpu_cores = functions.launchcmd('cat /proc/cpuinfo | grep "processor" |wc -l').readline()
        # logging.debug("cpu_num = " + cpu_num)
        # logging.debug("each_cpu_cores = " + each_cpu_cores)
        # logging.debug("proc_cpu_cores = " + proc_cpu_cores)

        phy_cpu_cores = int(cpu_num) * int(each_cpu_cores)
        sysinfo["phycpucores"] = phy_cpu_cores
        sysinfo["proc_cpu_cores"] = proc_cpu_cores
        sysinfo["cpu_num"] = cpu_num

        # install soft
        installsoftnum = functions.launchcmd('rpm -qa|wc -l').readline()
        sysinfo["installsoftnum"] = installsoftnum

        # login users
        users = functions.launchcmd("who | cut -d' ' -f1 |sort | uniq").readlines()
        usersinfo = ""
        for user in users:
            usersinfo = usersinfo + user + " "
        sysinfo["users"] = usersinfo

        return Response(sysinfo, status=status.HTTP_200_OK)