{"id":41,"date":"2014-06-22T13:23:15","date_gmt":"2014-06-22T13:23:15","guid":{"rendered":"http:\/\/ixyzero.com\/blog\/?p=41"},"modified":"2014-06-22T13:23:15","modified_gmt":"2014-06-22T13:23:15","slug":"%e7%94%a8python%e6%94%b6%e9%9b%86linux%e7%b3%bb%e7%bb%9f%e4%bf%a1%e6%81%af","status":"publish","type":"post","link":"https:\/\/ixyzero.com\/blog\/archives\/41.html","title":{"rendered":"\u7528Python\u6536\u96c6Linux\u7cfb\u7edf\u4fe1\u606f"},"content":{"rendered":"<p>\u901a\u8fc7\u8bfb\u53d6Linux\u7cfb\u7edf\u4e2d\u7684\u4e00\u4e9b\u5173\u952e\u6027\u6587\u4ef6\u4ee5\u53ca\u8c03\u7528\u76f8\u5173\u547d\u4ee4\u6765\u67e5\u770b\u7cfb\u7edf\u4fe1\u606f\uff1a<\/p>\n<pre class=\"lang:python decode:true\">#!\/usr\/bin\/env python\n#coding=utf-8\nimport os\nmem=[]\nnet=[]\n\ndef dump(content):\n    for id, item in enumerate(content, 1):\n        print(\"%d:\" % id)\n        for k in item:\n            print(\" %s: %s\" % (k, item[k]))\n    print(\"\\n\")\n\ndef parse(content):\n    info = {}\n    for line in content:\n        t = line.split(\": \")\n        if len(t) &lt; 2:\n            continue\n        name = t[0].strip()\n        value = t[1].strip()\n        info[name] = value\n    return info\n\ndata = os.popen(\"\/usr\/sbin\/dmidecode\").read()\nsectors = data.split(\"\\n\\n\")\nfor sector in sectors:\n    lines = sector.split(\"\\n\")\n    if len(lines) &lt; 3:\n        continue\n    title = lines[1]\n    info = parse(lines)\n    if title == 'Memory Device':\n        if not info['Size'].startswith('No'):\n            mem.append({'size':info['Size']})\n\ndata = os.popen(\"\/sbin\/ip -o -f inet addr\").read()\nlines = data.split(\"\\n\")\nfor line in lines:\n    items = line.split()\n    if len(items) &lt; 4:\n        continue\n    net.append({'name':items[1],'addr':items[3]})\n\n\nprint(\"[OS]\")\nos.system('\/bin\/uname -nsr')\nprint(open('\/etc\/issue.net').readline())\n\nprint(\"[CPU]\")\nlines=open('\/proc\/cpuinfo').readlines()\ninfo=parse(lines)\nprint(\"Model Name: %s\\nAddress sizes: %s\\n\" % (info['model name'], info['address sizes']))\nos.system('\/usr\/bin\/lscpu')\nprint(\"\\n\")\n\nprint(\"[Memory]\")\nlines=open('\/proc\/meminfo').readlines()\ninfo=parse(lines)\nprint(\"total: %s ; swap: %s\" % (info['MemTotal'], info['SwapTotal']))\ndump(mem)\n\nprint(\"[FS]\")\nos.system('\/bin\/lsblk')\nprint(\"\")\nos.system('\/bin\/df -h')\n\nprint(\"\\n\")\nprint(\"[Net]\")\ndump(net)<\/pre>\n<p>=EOF=<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u901a\u8fc7\u8bfb\u53d6Linux\u7cfb\u7edf\u4e2d\u7684\u4e00\u4e9b\u5173\u952e\u6027\u6587\u4ef6\u4ee5\u53ca\u8c03\u7528\u76f8\u5173\u547d\u4ee4\u6765\u67e5\u770b\u7cfb\u7edf\u4fe1\u606f\uff1a #!\/usr\/bin\/env pyt [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,12],"tags":[30,8],"class_list":["post-41","post","type-post","status-publish","format-standard","hentry","category-linux","category-tools","tag-linux","tag-python"],"views":3153,"_links":{"self":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/41","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/comments?post=41"}],"version-history":[{"count":0,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/41\/revisions"}],"wp:attachment":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/media?parent=41"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/categories?post=41"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/tags?post=41"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}