1.创建工程simplecmdb

django-admin.py startproject simplecmdb

2.创建应用

cd simplecmdb

python manage.py startapp hostinfo

3.编辑配置文件

vim simplecmdb/setting.py

 1 INSTALLED_APPS = (
 2     'django.contrib.admin',
 3     'django.contrib.auth',
 4     'django.contrib.contenttypes',
 5     'django.contrib.sessions',
 6     'django.contrib.messages',
 7     'django.contrib.staticfiles',
 8     'hostinfo'
 9 #添加应用
10 )
11
12 MIDDLEWARE_CLASSES = (
13     'django.contrib.sessions.middleware.SessionMiddleware',
14     'django.middleware.common.CommonMiddleware',
15 #   'django.middleware.csrf.CsrfViewMiddleware',
16 #注释csrf方便使用第三方工具curl
17     'django.contrib.auth.middleware.AuthenticationMiddleware',
18     'django.contrib.messages.middleware.MessageMiddleware',
19     'django.middleware.clickjacking.XFrameOptionsMiddleware',
20 )

4.添加model

 1 from django.db import models
 2
 3 # Create your models here.
 4
 5 class Host(models.Model):
 6     hostname = models.CharField(max_length=50)
 7     ip = models.IPAddressField()
 8     vendor = models.CharField(max_length=50)
 9     product = models.CharField(max_length=50)
10     sn = models.CharField(max_length=50)
11     cpu_model = models.CharField(max_length=50)
12     cpu_num = models.IntegerField()
13     memory = models.CharField(max_length=50)
14     osver = models.CharField(max_length=50)

5.初始化数据库

python manage.py sqlall hostinfo

python manage,py syncdb

6.编辑url.py,添加url

url(r'^hostinfo/collect/','hostinfo.views.collect')

7.编辑views.py

 1 from django.shortcuts import render
 2 from django.http import HttpResponse
 3 from hostinfo.models import Host
 4
 5 # Create your views here.
 6
 7 def collect(req):
 8     if req.POST:
 9         hostname = req.POST.get('hostname')
10         ip = req.POST.get('ip')
11         product = req.POST.get('product')
12         sn = req.POST.get('sn')
13         vendor = req.POST.get('vendor')
14         cpu_model = req.POST.get('cpu_model')
15         cpu_num = req.POST.get('cpu_num')
16         memory = req.POST.get('memory')
17         osver = req.POST.get('osver')
18
19         host = Host()
20         host.hostname = hostname
21         host.ip = ip
22         host.product = product
23         host.sn = sn
24         host.vendor = vendor
25         host.cpu_model = cpu_model
26         host.cpu_num = cpu_num
27         host.memory = memory
28         host.osver = osver
29
30         host.save()
31
32         return HttpResponse('data have save into DB')
33     else:
34         return HttpResponse('there is no data from POST method')

8.注册model到admin界面

 1 from django.contrib import admin
 2 from hostinfo.models import Host
 3
 4 # Register your models here.
 5
 6 class HostAdmin(admin.ModelAdmin):
 7     list_display = [
 8             'hostname',
 9             'ip',
10             'product',
11             'vendor',
12             'sn',
13             'cpu_model',
14             'cpu_num',
15             'memory',
16             'osver']
17
18 admin.site.register(Host,HostAdmin)

9.启动服务

python manage.py runserver 0.0.0.0:8000

10.访问

curl -d hostname='node02' -d ip='192.168.1.2' -d product='BL 380' -d sn='XX213' -d vendor='HP' -d cpu_model='Intel' -d cpu_num=1 -d memory='250G' -d osver='md 05c' http://192.168.1.120:8000/hostinfo/collect/

  1 #!/usr/bin/env python
  2
  3 import urllib,urllib2
  4 from subprocess import Popen,PIPE
  5
  6 def getIfconfig():
  7     p = Popen(['ifconfig'],stdout=PIPE)
  8     data = p.stdout.read()
  9     return data
 10
 11 def getDmi():
 12     p = Popen(['dmidecode'],stdout=PIPE)
 13     data = p.stdout.read()
 14     return data
 15
 16 def parseData(data):
 17     parsed_data = []
 18     new_line = ''
 19     data = [i for i in data.split('\n') if i]
 20     for line in data:
 21         if line[0].strip():
 22              parsed_data.append(new_line)
 23             new_line = line +'\n'
 24         else:
 25             new_line += line+'\n'
 26     parsed_data.append(new_line)
 27     return [i for i in parsed_data if i]
 28
 29 def parseIfconfig(parsed_data):
 30     parsed_data = [i for i in parsed_data if not i.startswith('lo')]
 31     for lines in parsed_data:
 32         line_list = lines.split('\n')
 33         devname = line_list[0].split()[0]
 34         macaddr = line_list[0].split()[-1]
 35         ipaddr = line_list[1].split()[1].split(':')[1]
 36         break
 37     dic['ip'] =ipaddr
 38     return dic
 39
 40 def parseDmi(parsed_data):
 41     dic = {}
 42     parsed_data = [i for i in parsed_data if i.startswith('System Information')]
 43     parsed_data = [i for i in parsed_data[0].split('\n')[1:] if i]
 44     dmi_dic =  dict([i.strip().split(':') for i in parsed_data])
 45     dic['vendor'] = dmi_dic['Manufacturer'].strip()
 46     dic['product'] = dmi_dic['Product Name'].strip()
 47     dic['sn'] = dmi_dic['Serial Number'].strip()[:15]
 48     return dic
 49
 50 def getHostname(f):
 51     with open(f) as fd:
 52         for line in fd:
 53             if line.startswith('HOSTNAME'):
 54                 hostname = line.split('=')[1].strip()
 55                 break
 56     return {'hostname':hostname}
 57
 58 def getOsver(f):
 59     with open(f) as fd:
 60         for line in fd:
 61             osver = line.strip()
 62             break
 63     return {'osver':osver}
 64
 65 def getCpu(f):
 66     num = 0
 67     with open(f) as fd:
 68         for line in fd:
 69             if line.startswith('processor'):
 70                 num +=1
 71             if line.startswith('model name'):
 72                 cpu_model = line.split(':')[1].split()
 73                 cpu_model = cpu_model[0]+' '+cpu_model[-1]
 74     return {'cpu_num':num,'cpu_model':cpu_model}
 75
 76 def getMemory(f):
 77     with open(f) as fd:
 78         for line in fd:
 79             if line.startswith('MemTotal'):
 80                 mem = int(line.split()[1].strip())
 81                 break
 82     mem = "%d" % int(mem/1024.0)+'M'
 83     return {'memory':mem}
 84
 85
 86 if __name__ == '__main__':
 87     dic = {}
 88     data_ip = getIfconfig()
 89     parsed_data_ip = parseData(data_ip)
 90     ip = parseIfconfig(parsed_data_ip)
 91     data_dmi = getDmi()
 92     parsed_data_dmi = parseData(data_dmi)
 93     dmi = parseDmi(parsed_data_dmi)
 94     hostname = getHostname('/etc/sysconfig/network')
 95     osver = getOsver('/etc/issue')
 96     cpu = getCpu('/proc/cpuinfo')
 97     mem = getMemory('/proc/meminfo')
 98     dic.update(ip)
 99     dic.update(dmi)
100     dic.update(hostname)
101     dic.update(osver)
102     dic.update(cpu)
103     dic.update(mem)
104     data = urllib.urlencode(dic)
105     req = urllib2.urlopen('http://192.168.1.120:8000/hostinfo/collect/',data)
106     print req.read()

转载于:https://www.cnblogs.com/Nyan-Workflow-FC/p/5699347.html

python-Django收集主机信息相关推荐

  1. python是什么牌子主机_python 收集主机信息

    这篇文章是之前几篇的一个小综合.也是通过收集主机的一些参数信息,熟悉python里的文件读取,字符切割,字典存储等知识. 文章结构: (1) 文章目的,需要收集的信息,并逐个分析如何获取信息. (2) ...

  2. 网络安全kali渗透学习 web渗透入门 Metasploit---基于tcp协议收集主机信息

    我们前面学习了主动信息收集和被动信息收集,而且还学习了漏洞检测工具NESSUS,接下来给大家讲解使用Metasploit来对目标进行信息收集,这个过程包含了前面所有的方式以及多了一些更加极端的获取信息 ...

  3. [Python+Django]Web学生信息管理系统数据库设计及系统实现

    本文我们完成数据的设计,并通过Django框架完成数据库构建同时利用Django框架模式实现学生信息管理系统的功能. 简单的包装下毕设应该没问题了. Python,Mysql,Pycharm的安装本文 ...

  4. 基于Python+django的学生信息管理系统-计算机毕业设计

    项目介绍 我国是一个高等教育逐渐普及的国度,相应的每年也有上百万的大学生入校,如此庞大的学生数量如何进行更加科学的管理是教育工作者一直关心的一个问题,为了能够实现高校对学生信息管理的科学化,信息化,我 ...

  5. 计算机毕业设计Python+Django的旅游信息网站系统(源码+系统+mysql数据库+Lw文档)

    项目介绍 随着时代的发展,旅游已经成为人们假日中一个很好的消闲娱乐项目了,在阳光明媚的一天中带着老婆孩子到一个山清水秀的地方去度过美好的一天是很多人的理想生活.尤其是在当前全球内卷严重的情况下,旅游更 ...

  6. python+django车辆违章信息查询管理系统pycharm项目

    本文设计目标为设计车辆违章管理系统,车辆违章管理系统是一种创新的系统,创新点包含了系统框架进行结合,在仔细研究了前后端开源框架之后,最后选择使用开源框架django,且在开源框架的基础上实现了车辆违章 ...

  7. python+django+vue二手车信息网站flask

    本二手车信息网站主要包括个人中心.用户管理.二手车信息管理.二手车分类信息管理等多个模块.它帮助二手车实现了信息化.网络化,通过测试,实现了系统设计目标,相比传统的管理模式,本系统合理的利用了二手车数 ...

  8. dmitry 收集主机信息

    dmitry 由C语言编写而成,基本功能是利用启动时间报告和tcp端口扫描信息,简单的WHOIS查询来获取主机的信息. 利用whois通过ip地址查询域名地址 利用whois通过域名查询ip地址 搜索 ...

  9. 主机信息收集工具DMitry

    主机信息收集工具DMitry DMitry是Kali Linux内置的一款信息收集工具.它的目标主要是Web类主机.它不仅通过主动查询.端口扫描方式,还借助第三方网站和搜索引擎获取信息. 它搜集的信息 ...

最新文章

  1. 数字图像处理基础知识之二
  2. linux perl cpan 安装使用
  3. 在非activity类调用startActivityForResult
  4. 文巾解题 15. 三数之和
  5. 菜鸟的DUBBO进击之路(一):SOA构架
  6. python在统计专业的应用_Python:使用Counter进行计数统计
  7. jqgrid treegrid 重新加载数据
  8. 微信支付需要证书认证时报“出现了内部错误”
  9. 视频分割神器-MP4文件随意分割
  10. 一个对于三只松鼠视觉稿的分析
  11. Python中循环题目二的练习(for、while、if)
  12. 三星很陶醉:爷会成为智能手机之王
  13. chi2inv函数 matlab_matlab中ltiview怎么使用啊
  14. 使用Bing转换器翻译IE 8中的语言
  15. 960帧高速摄影原理及知识普及(红米K20Pro)
  16. 如何利用ASP实现邮箱访问(转)
  17. AIoT专业术语汇总
  18. [附源码]java毕业设计高铁售票管理系统
  19. 正确选择低噪声放大器
  20. 谈谈小红书怎么引流减肥产品?让你轻松上热门变现

热门文章

  1. 关于Django将数据映射到Html中的操作
  2. Zend framework重定向的方法
  3. 【转】Linux root修改密码失败
  4. Open ID Connect(OIDC)在 ASP.NET Core中的应用
  5. C#托管代码是什么?非托管代码是什么?
  6. 线上Slave报1062的案例
  7. Basic Level 1008. 数组元素循环右移问题 (20)
  8. android 安装环境及入门
  9. 一般函数指针和类(非MFC)的成员函数指针
  10. java List集合总结