python 资产扫描01
本地建立的三个文件:
Asset1.txt 用来保存扫描到的资产
Asset2.txt 用来导入给定的资产
Repeat.txt 保存重复的资产
程序的功能:
1.资产扫描,以 位置:资产 格式保存到Asset1文件中,如果资产重复,将重复的资产保存到Repeat文件中,按Q退出
2.资产比对,比对Asset1和Asset2 中的资产信息,输出两个文件的对称差集,即为有问题的资产
3.查看重复资产
4.清空所有数据
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2017/11/21 0021 16:01
# @Author : ming import re
import stat, os
import time def Number():
"""
:在第一行输出总资产数量信息
"""
filename = "Asset1.txt"
with open(filename) as myfile:
lines = len(myfile.readlines())
myfile.close()
print "\033[5;37;44mTotal assets: [%s] in %s\033[0m" % (lines, filename) def Repeat(asset):
"""
:param asset: 资产信息参数
:return: True代表资产重复,False代表资产没有重复
"""
with open("Asset1.txt") as myfile:
for i in myfile.readlines():
asset2 = re.sub("-", "\-", asset)
p = re.compile("%s$" % asset2)
existence = p.findall(i)
if len(existence) != 0:
if asset == existence[0]:
return True
return False def SCAN():
locate = "NONE" # 默认位置
ass = "NONE" # 默认资产
prompt = "This is prompt information" # 默认提示语
rock_list = [] # 当前机架资产列表 os.chmod('Asset1.txt', stat.S_IWRITE) # 取消只读
flag = True
with open("Asset1.txt", "r+") as file:
file.seek(0, 2)
while flag:
os.system("cls")
Number() # 在第一行输出总资产数量信息
print ("\033[1;33;44mCurrent rack locate: %s\033[0m" % locate) # 输出当前所在机架
print (prompt) # 输出操作提示语
print ("The current rack has scanned asset num: %d" % len(rock_list)) # 输出当前机架已经扫描的资产信息
for i in rock_list: # 打印当前机架已经扫描的资产
print i
scan = raw_input("Please scan[\"Q\" to quit]:")
scan = scan.strip().upper()
if re.search("R\d{1,2}C\d{1,2}", scan): # 判断是否为位置信息
locate = scan
prompt = "\033[1;32;44mLocation update successful\033[0m"
del rock_list[:]
continue
elif re.search("\w+-\w-\w+", scan): # 判断是否为资产信息
asset = scan
repeat = Repeat(asset) # 判断资产是否重复
if repeat == True:
prompt = "\033[1;31;44mAsset information repetition!!!\033[0m"
repeat_data = ("%s:%s" % (locate, asset)) # 重复资产写入新文件
with open("Repeat.txt", "r+") as repete_file:
repete_file.seek(0, 2)
repete_file.write("%s\n" % repeat_data)
repete_file.flush()
continue
elif repeat == False:
pass
elif scan == "Q" or scan == "q": # 判断是否退出
break
else: # 输入错误
prompt = "\033[1;31;44mInput error!!!\033[0m"
continue
data = ("%s:%s" % (locate, asset))
if locate != "NONE" and asset != "NONE" and scan != "" and repeat != True: # 写入文件
file.write("%s\n" % data)
file.flush()
rock_list.append(asset)
prompt = "\033[1;35;44mAsset update successful\033[0m"
else:
prompt = "\033[1;35;44mLocation or assets are empty\033[0m"
os.chmod('Asset1.txt', stat.S_IREAD) # 设置只读 def CHECK():
"""
#比对
:return: set1中存在set2中不存在;set2中存在set1中不存在
"""
set1 = set([])
set2 = set([])
os.chmod('Asset1.txt', stat.S_IWRITE) # 取消只读
with open("Asset1.txt", "r+") as file1:
for line1 in file1.readlines():
set1.add(line1.strip())
with open("Asset2.txt", "r+") as file2:
for line2 in file2.readlines():
set2.add(line2.strip())
return set1.difference(set2), set2.difference(set1)
os.chmod('Asset1.txt', stat.S_IREAD) # 设置只读 def DUP():
list3 = []
set4 = set([])
with open("Repeat.txt", "r+") as file1:
for line1 in file1.readlines():
list3.append(line1.strip())
set4 = set(list3)
return set4 def reset():
os.chmod('Asset1.txt', stat.S_IWRITE) # 取消只读
sure = raw_input("Are you sure clear all data[Y/N]:")
if sure == "y" or sure == "Y" or sure == "yes" or sure == "YES":
with open("Asset1.txt", "w") as f1:
pass
with open("Asset2.txt", "w") as f2:
pass
with open("Repeat.txt", "w") as f3:
pass
os.chmod('Asset1.txt', stat.S_IREAD) # 设置只读 def main():
print "1.Scan assets"
print "2.Assets verification"
print "3.Duplicated assets"
print "4.Clear all data"
num = raw_input("please choise:")
if num == "":
SCAN()
elif num == "":
A, B = CHECK()
print ("IN Asset1.txt NOT IN Asset2.txt")
for i in A:
print i
print ("IN Asset2.txt NOT IN Asset1.txt")
for i in B:
print i
elif num == "":
C = DUP()
for i in C:
print i
elif num == "":
C = reset()
raw_input("\nEnter to Quit!:") if __name__ == '__main__':
main()
python 资产扫描01的更多相关文章
- Python 学习笔记01
print:直接输出 type,求类型 数据类型:字符串,整型,浮点型,Bool型 note01.py # python learning note 01 print('Hello w ...
- Python web前端 01 HTML常用标签
Python web前端 01 HTML常用标签 一.HTML创建项目 file ---->new project -----> 输入项目名------>创建文件夹 new dicr ...
- Python并发编程01 /操作系统发展史、多进程理论
Python并发编程01 /操作系统发展史.多进程理论 目录 Python并发编程01 /操作系统发展史.多进程理论 1. 操作系统 2. 进程理论 1. 操作系统 定义:管理控制协调计算机中硬件与软 ...
- python网络编程01 /C/S架构|B/S架构、网络通信原理、五层协议、七层协议简述、端口映射技术
python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述.端口映射技术 目录 python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述. ...
- Goby资产扫描工具安装及报错处理
官网: https://cn.gobies.org/index.html 产品介绍: 帮企业梳理资产暴露攻击面,新一代网络安全技术,通过为目标建立完整的资产数据库,实现快速的安全应急. 已有功能: 扫 ...
- Python数学建模-01.新手必读
Python 完全可以满足数学建模的需要. Python 是数学建模的最佳选择之一,而且在其它工作中也无所不能. 『Python 数学建模 @ Youcans』带你从数模小白成为国赛达人. 1. 数学 ...
- Python批量扫描服务器指定端口状态
闲来无事用Python写了一个简陋的端口扫描脚本,其简单的逻辑如下: 1. python DetectHostPort.py iplist.txt(存放着需要扫描的IP地址列表的文本,每行一个地址) ...
- python --常用内置模块01
1.简单了解模块 模块就是我们把装有特定功能的代码进行归类的解构,从代码编写的单位来看我们的程序 从小到大的顺序:一条代码< 语句块<代码块(函数,类) < 模块 我 ...
- [Python] 文件扫描
文件扫描 下载 https://github.com/YouXianMing/FileManager 细节 1. 基于Python 3.60,其他版本未测试 2. 支持扫描深度,不设置则扫描全部,设置 ...
随机推荐
- Alpha版本测试文档
概述 本次测试主要是为了测试是否有导致崩溃的bug,验证是否符合软件基本需求. 测试环境 硬件测试:安卓系统手机,安卓平板. 测试人员 赖彦谕,金哉仁. 实际进度 2015/11/6 – 2015/1 ...
- 实验1:java开发环境的熟悉
一.实验内容 1. 使用JDK编译.运行简单的Java程序 2.使用Eclipse 编辑.编译.运行.调试Java程序 3.实现四则运算并进行测试. 二.实验知识点 1. JVM.JRE.JDK的安装 ...
- 20172308 实验三《Java面向对象程序设计 》实验报告
20172308 2017-2018-2 <程序设计与数据结构>实验三报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 周亚杰 学号:20172308 实验教师:王 ...
- Chapter 7 面向对象分析
面向对象的分析模型由功能模型.分析对象模型.动态模型三个独立的模型组成,从软件的需求功能来看分析类可以划分为实体类.边界类和控制类三种类型.识别分析类.控制类和实体类需要充分理解系统内部的行为.一个参 ...
- Beta Scrum Day 4 — 听说
听说
- whu 1538 - B - Stones II 01背包
题目链接: http://acm.whu.edu.cn/land/problem/detail?problem_id=1538 Problem 1538 - B - Stones II Time Li ...
- 在新的电脑上部署 Hexo,保留原有博客的方法
用U盘从旧的电脑拷贝整个blog文件夹. 在新的电脑上装好git并配置好用户名和密钥. 安装 node.js 安装 hexo:npm install hexo-cli -g 用U盘把blog文件夹拷贝 ...
- 详解Android微信登录与分享
Android 使用微信登录.分享功能 具体的文档详情微信官网上介绍(微信官网文档),本人直接按照项目部署步骤进行讲解: 第一步:申请你的AppID: 第二步:依赖 dependencies { co ...
- PHP-时间函数
1.时间格式化函数date(format,timestamp) format 时间格式 timestamp 时间戳 下面列出了一些常用于日期的字符: d - 表示月里的某天(01-31) m - 表示 ...
- MSTSC 修改端口的简单方法 3389
1. 3389端口太过危险 最简单的办法是 修改默认端口方法非常简单. 2. win+r 打开运行, 输入 regedit 打开 注册表 3. 在地址栏输入 远程的服务的路径 输入的内容为: 计算机 ...