1、目录结构

1、服务器端

2、客户端

2、具体代码如下

1、数据库增加两个字段

class Server(models.Model):
"""
服务器信息
"""
# asset = models.OneToOneField('Asset') server_status_choices = (
(1, '上架'),
(2, '在线'),
(3, '离线'),
(4, '下架'),
) server_status_id = models.IntegerField(choices=server_sta
... latest_date = models.DateTimeField(null=True,blank=True)  

1、为什么服务器要有一个状态?

  1. 公司有100台服务器,在线只有90台,10台是关机状态
  2. 这10台因为没有开机,你采也采不到,所以离线的不在工作状态,不应该把它拿走
  3. 所以我给它要设置一个状态

2、GET请求获取未采集服务器列表

def server(request):
if request.method == "GET":
current_date = date.today()
# 获取今日未采集的主机列表
host_list = models.Server.objects.filter(
Q(Q(latest_date=None)|Q(latest_date__date__lt=current_date)) & Q(server_status_id=2)
).values('hostname')
host_list = list(host_list)
return HttpResponse(json.dumps(host_list))

1、如何获取今天的日期?

>>> from datetime import date
>>> date.today
<built-in method today of type object at 0x00000000539FEA10>
>>> date.today()
datetime.date(2018, 7, 20)

2、我查找什么?

latest_date、latest_date__date__lt、server_status_id
3、如果时间等于null要不要取?

获取

4、今天凌晨一点采集一次8点要不要采集?
latest_date__date只取年月日(数据库里去的是年月日时分秒)

5、一次只采集200个如何处理

Q(Q(latest_date=None)|Q(latest_date__date__lt=current_date)) & Q(server_status_id=2)
).values('hostname')[0:200]

3、记得更新时间

class Server(object):

	def __init__(self,server_obj,basic_dict,board_dict):
self.server_obj = server_obj
self.basic_dict = basic_dict
self.board_dict = board_dict def process(self,):
# 更新server表
tmp = {}
tmp.update(self.basic_dict['data'])
tmp.update(self.board_dict['data'])
。。。 self.server_obj.latest_date = datetime.datetime.now()
          
self.server_obj.save()
if record_list:
models.ServerRecord.objects.create(server_obj=self.server_obj, content=';'.join(record_list))

1、等于空的时候要不要采集?

要采集,更新服务器信息的时候,处理完了把时间改一下

4、客户端

class SaltSshClient(BaseClient):

	def task(self,host):
obj = PluginManager(host)
server_dict = obj.exec_plugin()
self.post_server_info(server_dict) def get_host_list(self):
response = requests.get(self.api)
# print(response.text) # [{"hostname": "c1.
return json.loads(response.text) def exec(self):
pool = ThreadPoolExecutor(10) host_list = self.get_host_list()
for host in host_list:
pool.submit(self.task,host['hostname'])

  

 

CMDB服务器管理系统【s5day90】:获取今日未采集主机列表的更多相关文章

  1. CMDB服务器管理系统【s5day88】:采集资产之Agent、SSH和Salt模式讲解

    在对获取资产信息时,简述有四种方案. 1.Agent  (基于shell命令实现) 原理图 Agent方式,可以将服务器上面的Agent程序作定时任务,定时将资产信息提交到指定API录入数据库 优点: ...

  2. CMDB服务器管理系统【s5day88】:采集资产-文件配置(一)

    django中间件工作原理 整体流程: 在接受一个Http请求之前的准备 启动一个支持WSGI网关协议的服务器监听端口等待外界的Http请求,比如Django自带的开发者服务器或者uWSGI服务器. ...

  3. CMDB服务器管理系统【s5day88】:采集资产-文件配置(二)

    上节疑问: 1.老师我们已经写到global_settings里了,为什么还要写到__init__.py setting 这的作用是为了:整合起两个的组合global_settings和setting ...

  4. CMDB服务器管理系统【s5day89】:采集资产之汇报信息

    1.服务器端收到的数据和客户端的数据不一样 print(request.post) 少发了,还是少取了,说明根本没有把数据全发过来 print(request.body) 1.只把字典的key给我发过 ...

  5. CMDB服务器管理系统【s5day89】:采集资产之整合资产

    1.业务逻辑单独写 1.代码目录结构 2.client.py from src.plugins import PluginManager class BaseClient(object): def p ...

  6. CMDB服务器管理系统【s5day88】:采集资产之整合插件

    以后导入配置文件不用去from conf而是导入from lib.config,因为在这可以导入global_settings和settings.py import sys import os imp ...

  7. CMDB03 /今日未采集的资产、资产入库、资产变更记录、资产采集

    CMDB03 /今日未采集的资产.资产入库.资产变更记录.资产采集 目录 CMDB03 /今日未采集的资产.资产入库.资产变更记录.资产采集 1. 获取今日未采集的服务器 2. server资产入库以 ...

  8. CMDB服务器管理系统【s5day92】:服务器管理回顾

    一.服务器管理回顾 1.requests 发送: requests.post(url='',data=,json=) requests.get() Django接受: request.POST, co ...

  9. CMDB服务器管理系统【s5day87】:需求讨论-设计思路

    自动化运维平台愿景和服务器管理系统背景 服务器管理系统 管理后台示例 需求和设计 为什么开发服务器管理系统? 背景: 原来是用Excel维护服务器资产,samb服务[多个运维人员手动维护] 搭建运维自 ...

随机推荐

  1. sql server 错误日志errorlog

    一 .概述 SQL Server 将某些系统事件和用户定义事件记录到 SQL Server 错误日志和 Microsoft Windows 应用程序日志中. 这两种日志都会自动给所有记录事件加上时间戳 ...

  2. MySQL从查找数据库表到删除全过程

    使用DOS命令进入MySQL:mysql -u root -p   按回车键输入密码显示如下界面成功进入MySQL交互界面. 如果此时不知道MySQL有哪些数据库,使用显示所有数据库名语句:show ...

  3. 爬虫系列二(数据清洗--->bs4解析数据)

    一 BeautifulSoup解析 1 环境安装 - 需要将pip源设置为国内源,阿里源.豆瓣源.网易源等 - windows (1)打开文件资源管理器(文件夹地址栏中) (2)地址栏上面输入 %ap ...

  4. 前端面试回顾---javascript的面向对象

    转:https://segmentfault.com/a/1190000011061136 前言 前一阵面试,过程中发现问到一些很基础的问题时候,自己并不能很流畅的回答出来.或者遇到一些基础知识的应用 ...

  5. Zookeeper集群为什么要是单数

    (原) 在zookeeper集群中,会有三种角色,leader. follower. observer分别对应着总统.议员.观察者. 半数以上投票通过:可以这样理解.客户端的增删改操作无论访问到了哪台 ...

  6. wxWidgets 和 QT 之间的选择

    (非原创,网络摘抄) 跨平台的C++ GUI工具库很多,可是应用广泛的也就那么几个,Qt.wxWidgets便是其中的翘楚这里把GTK+排除在外,以C实现面向对象,上手相当困难,而且Windows平台 ...

  7. python实现数据结构单链表

    #python实现数据结构单链表 # -*- coding: utf-8 -*- class Node(object): """节点""" ...

  8. SQL Server中存储过程的创建命令

    Create Proc 存储过程名称 ( @参数1 参数类型, @参数2 参数类型, ... ... --最后一行参数,别加逗号了,加逗号的意思是表示后面还有参数 ) AS 需要执行的SQL命令 GO ...

  9. Firefox 中出现的 “Network Protocol Error”怎么办

    Mozilla Firefox 多年来一直是我的默认 Web 浏览器,我每天用它来进行日常网络活动,例如访问邮件,浏览喜欢的网站等.今天,我在使用 Firefox 时遇到了一个奇怪的错误.我试图在 R ...

  10. H5调用手机拍照并展示在前端页面

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...