【实例简介】功能齐全的超市管理系统,专门美化过UI

请先附加数据库,否则无法进入系统(默认拥有最高权限账户为经理,密码为admin 压缩包内有使用说明!

文件:590m.com/f/25127180-487960876-c89e68(访问密码:551685)

【实例截图】




以下内容无关:

-------------------------------------------分割线---------------------------------------------

脚本主要功能:

   1)通过zabbix api接口采集所有监控主机ip地址;2)通过cmdb系统(蓝鲸)接口采集所有生产主机IP地址、主机名、操作系统、电源状态;3)以上2步返回数据对比,找出未监控主机ip地址,生成csv文件;4)发送邮件。

脚本如下:

复制代码
#!/usr/bin/python
#coding:utf-8

import requests
import json
import re
import time
import csv
from collections import Counter
import smtplib
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication

从cmdb系统获取虚拟化生产主机ip

def getCmdbProdHost():
url1 = ‘http://paas.bkpaas.baonengmotor.com/api/c/compapi/v2/cc/search_inst/’
data1 = {
“bk_app_secret”: “**********************”,
“bk_app_code”: “bk_cmdb”,
“bk_username”: “admin”,
“bk_obj_id”: “host”,
“page”: {
“start”: 0,
“limit”: 2000,
“sort”: “bk_inst_id”
},
“fields”: {
“host”: [
“bk_host_id”,
“bq_hostname”,
“bk_host_innerip”,
“bq_hosttype”,
“powerState”,
“bq_osname”
]
} }
r1 = requests.post(url1, json=data1)
response_dict1 = r1.json()
#print(response_dict1)
prodip_dict = {}
testip = “10.210.98|10.210.99|10.210.100|10.210.101|0.0.0” #测试网段ip
for i in response_dict1.get(‘data’)[“info”]:
if i[“bq_hosttype”] == “t2” and i[“powerState”] == “poweredOn” and not re.search(“UAT”, i[“bq_hostname”]) and not re.match(testip, i[“bk_host_innerip”]):
prodip_dictkey = i[“bk_host_innerip”]
#prodip_dictvalue = i[“bq_hostname”]
prodip_dictvalue = [i[“bq_hostname”], i[“bq_osname”], i[“powerState”]]
prodip_dict[prodip_dictkey] = prodip_dictvalue
return prodip_dict

#获取zabbix系统登录认证
def getZabToken(url, post_headers, url_user, url_password):
post_data = {
“jsonrpc”: “2.0”,
“method”: “user.login”,
“params”: {
“user”: url_user,
“password”: url_password
},
“id”: 1
}
ret = requests.post(url, data=json.dumps(post_data), headers=post_headers)
return json.loads(ret.text).get(“result”)

def getZabHost(url,post_headers,token):
data = {
“jsonrpc”: “2.0”,
“method”: “host.get”,
“params”: {
“output”: [
“hostid”,
“host”
],
“selectInterfaces”: [
“interfaceid”,
“ip”
]
},
“id”: 2,
“auth”: token,
}
request = requests.post(url, headers=post_headers, data=json.dumps(data))
dict = json.loads(request.content)
zab_ip = []
for i in dict[‘result’]:
zab_ip.append(i[‘host’])
return zab_ip

def compare(zabhostlist, cmdbhostdict):
zabbixiplist = Counter(zabhostlist)
cmdbiplist = Counter(list(cmdbhostdict.keys()))
nomonip = {}
for i in list((cmdbiplist - zabbixiplist).elements()):
nomonip_value = cmdbhostdict[i]
nomonip_key = i
nomonip[nomonip_key] = nomonip_value
print(nomonip)
return nomonip

class writeToCsv(object):
def init(self,data,info):
self.data = data
self.info = info

def write_to_csv(self):rows = self.datainfo = self.infocsvfile = "zabbix未监控生产系统IP列表" + info + time.strftime('_%Y%m%d%H%M%S', time.localtime(time.time())) + ".csv"# print(csvfile)# 创建文件对象f = open(csvfile, 'w', newline='')# 通过文件创建csv对象csv_write = csv.writer(f)# writerow: 按行写入, writerows: 是批量写入# 写入数据 取列表的第一行字典,用字典的key值做为头行数据# csv_write.writerow(rows[0].keys())csv_write.writerow(["未监控生产IP", "主机名", "操作系统", "电源状态"])# 循环里面的字典,将value作为数据写入进去ip = list(rows.keys())hostname = list(rows.values())for row in range(len(ip)):csv_write.writerow([ip[row], hostname[row][0], hostname[row][1], hostname[row][2]])# 关闭打开的文件f.close()print("读写完成:",csvfile)return csvfile

def sendmail(csvfile,receiver):
sender = ‘xxx@xxx.com’
smtpserver = ‘xx.xx.xx.xx’
username = ‘xxx@xxx.com’
password = ‘******’
mail_title = ‘zabbix未监控生产主机IP地址’

# 创建一个带附件的实例
message = MIMEMultipart()
message['From'] = sender
message['To'] = ','.join(receiver)
message['Subject'] = Header(mail_title, 'utf-8')# 邮件正文内容
message.attach(MIMEText('每日自动统计监控覆盖率', 'plain', 'utf-8'))# 构造附件
att1 = MIMEApplication(open(csvfile, 'rb').read())  # 打开附件
att1.add_header('Content-Disposition', 'attachment', filename=csvfile)  # 为附件命名
message.attach(att1)smtpObj = smtplib.SMTP_SSL()  # 注意:如果遇到发送失败的情况(提示远程主机拒接连接),这里要使用SMTP_SSL方法
smtpObj.connect(smtpserver)
smtpObj.login(username, password)
smtpObj.sendmail(sender, message['To'].split(','), message.as_string())
print("邮件发送成功!!!")
smtpObj.quit()

if name == ‘main’:
url = ‘http://xx.xx.xx.xx/api_jsonrpc.php’ #zabbix监控系统接口地址
post_headers = {‘Content-Type’: ‘application/json’}
url_user = “Admin”
url_passwd = “******”
auth = getZabToken(url,post_headers,url_user,url_passwd)
zabhostlist = getZabHost(url,post_headers,auth) #获取zabbix监控主机ip地址列表
cmdbhostdict = getCmdbProdHost() #获取cmdb主机地址列表
#zabbix监控主机和cmdb主机做比较
data = compare(zabhostlist, cmdbhostdict)

#导出csv文件
info = '统计'
write = writeToCsv(data, info)
resp = write.write_to_csv()
receiver  = ['hushanshan2@bngrp.com']      #y邮件接收人,多人用逗号区分开
sendmail(resp, receiver)

复制代码

C# 超市管理系统源码相关推荐

  1. 计算机毕业设计Java-ssm爱心扶贫超市管理系统源码+系统+数据库+lw文档

    计算机毕业设计Java-ssm爱心扶贫超市管理系统源码+系统+数据库+lw文档 计算机毕业设计Java-ssm爱心扶贫超市管理系统源码+系统+数据库+lw文档 本源码技术栈: 项目架构:B/S架构 开 ...

  2. 基于Java的超市管理系统源码,数据库MySQL(附加论文13000字)

    目录 1.摘要 2.社会背景 3.系统可行性研究 4.系统的功能结构(图) 5.功能需求 6.开发环境介绍 7.系统数据流(图) 8.数据库(E-R模型) 9.功能展示 10.论文目录结构 11.源码 ...

  3. 超市管理系统源码,超市进销存管理系统源码 (CS架构)

    超市管理系统源码 超市进销存管理系统源码 (CS架构) 源码类型:全开源免费分享,需要源码学习可私信. 一.系统概述 适用于中小型购物中心.综合百货商场.大型仓储超市.量贩店.批发中心等,系统涵盖前台 ...

  4. 超市进销存系统管理源码 超市管理系统源码 (CS架构)

    超市进销存系统管理源码 超市管理系统源码 (CS架构) 下载:https://download.csdn.net/download/sidadi/86750568 源码描述: 一.源码介绍 1.本产品 ...

  5. 计算机毕业设计Java超市管理系统(源码+系统+mysql数据库+lw文档

    计算机毕业设计Java超市管理系统(源码+系统+mysql数据库+lw文档 计算机毕业设计Java超市管理系统(源码+系统+mysql数据库+lw文档) 本源码技术栈: 项目架构:B/S架构 开发语言 ...

  6. java计算机毕业设计小型超市管理系统源码+系统+数据库+lw文档+mybatis+运行部署

    java计算机毕业设计小型超市管理系统源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计小型超市管理系统源码+系统+数据库+lw文档+mybatis+运行部署 本源码技术栈 ...

  7. java计算机毕业设计中小型超市管理系统源码+数据库+系统+lw文档+mybatis+运行部署

    java计算机毕业设计中小型超市管理系统源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计中小型超市管理系统源码+数据库+系统+lw文档+mybatis+运行部署 本源码技 ...

  8. asp.net超市管理系统(源码+数据库)

    中小企业在我国经济发展中具有重要地位,目前我国的中小企业数量多,地区分布广泛,行业分布跨度大.随着全球经济一体化的发展和电子商务的兴起,中小企业之间的竞争将越来越激烈.网络及电子商务的迅猛发展突破了时 ...

  9. 【无标题】超市管理系统源码

    进货管理 进行商品采购入库,采购退货,进/退单据和当前库存查询,与供货商的往来帐务. 销售管理 进行商品销售,顾客退货,销/退单据和当前库存查询,POS 销售统计,与客户的往来帐务. 库存管理 包括库 ...

最新文章

  1. java导出excel(easypoi)
  2. myeclipse 提示为空白的问题
  3. 【Kubernetes】离线业务:Job与CronJob
  4. android自定义组件属性,android自定义控件并添加属性的方法以及示例
  5. Hibernate基本概念
  6. 多软件启动器 v1.0
  7. CentOS 7设置开机启动服务,添加自定义系统服务(Redis为例,绝对有效)
  8. 指定 年 周 星期 获取这周的开始日期和结束日期
  9. 101个MySQL调试和优化技巧
  10. java搜寻范围在哪设定_查找值在Java中的范围
  11. 2016.01.18 UILabel
  12. git 远程仓库 remote 使用总结
  13. STAR:转录组数据比对工具简介
  14. raytrace 算法理论与实践
  15. Vue3中文文档 - vuejs
  16. linux中gimp命令截图,Linux利用GIMP截图
  17. 解决旅行商问题的方法
  18. 如何使用WPS从正文开始页码为1,而不是从目录开始?
  19. 好看实用的便签条工具推荐
  20. 橙色wamp的可能解决方法

热门文章

  1. app内嵌h5分享到小程序分享功能
  2. jsp开发之文件下载
  3. 华三交换机配置access命令_㈡看看H3C华为交换机系列基本配置命令,有哪些是你不知道的?...
  4. php结账系统,pay: ThinkPHP开源聚合支付系统
  5. JavaWeb学习笔记:拦截器
  6. 华为云,助力企业快速省心过等保
  7. logit回归模型假设_Logistic回归模型及应用建模(二)
  8. uCgui和emWin的区别
  9. Java程序员面试常见面试题,你了解多少?初步整理简化版
  10. 【golang】go-admin系统进行项目开发,还是一个非常不错的项目,使用golang做管理后台,非常方便项目的快速搭建,基础功能鉴权已经完善了,就需要开发相关的业务逻辑即可。