python脚本统计局域网服务器和pc机的系统信息,并生成excel表格

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/usr/bin/env python
# -*- coding: utf_8 -*-
#Date:2016/10/17
#Author:wangpeng
#blog:http://wangpengtai.blog.51cto.com
import  subprocess
import  nmap
import  time,datetime
import  xlrd,xlsxwriter,xlwt
import  os,sys
from  xlutils.copy  import  copy
from  multiprocessing  import  Pool
def  ip_scan(ip):
     global  nm
     =  subprocess.Popen( "ping -c 1 -t 1 " + ip,stdin  =  subprocess.PIPE, stdout  =  subprocess.PIPE, stderr  =  subprocess.PIPE, shell  =  True )    
     output  =  p.stdout.read()
     #print output
     #the local time
     dtime  =  time.strftime( "%Y/%m/%d %X" ,time.localtime())
     nm  =  nmap.PortScanner()
     if  "100% packet loss"  not  in  output:
         nm.scan(ip,arguments = '-O -sS -sU -F' )
         try :
             dict  =  { 'status' : 'up' , 'IP' :ip, 'OS' : str (nm[ip][ 'osmatch' ][ 0 ][ 'name' ]), 'Mac' : str (nm[ip][ 'vendor' ].keys()[ 0 ]), 'Hostname' : str (nm[ip][ 'hostnames' ][ 0 ][ 'name' ]), 'Datetime' :dtime}
             #print dict
             #addResult(dict,filename,table)
             #print 'IP:%s,dict:%s' %(ip,dict)
         except :
             try :
                 dict  =  { 'status' : 'up' , 'IP' :ip, 'OS' : str (nm[ip][ 'osmatch' ][ 0 ][ 'name' ]), 'Mac' :' ',' Hostname ':str(nm[ip][' hostnames '][0][' name ']),' Datetime':dtime}
             except :
                 dict  =  { 'status' : 'up' , 'IP' :ip, 'OS' :' ',' Mac ':str(nm[ip][' addresses '][' mac ']),' Hostname ':str(nm[ip][' hostnames '][0][' name ']),' Datetime':dtime}
                 print  ip
             #print "####error!####"
             #print dict
                 #pass
         addResult( dict ,filename,table)
     else :
         print  'ip:%s--->down!'  % ip
         dict  =  { 'status' : 'down' , 'IP' :ip, 'OS' :' ',' Mac ':' ',' Hostname ':' ',' Datetime':dtime}
         addResult( dict ,filename,table)
def  count_rows(filename):
     data  =  xlrd.open_workbook(filename)
     table  =  data.sheets()[ 0 ]
     nrows  =  table.nrows       
     return  nrows
#create a excel table 
def  addResult( dict ,filename,table):
     #pick up the key from dict and make it title to excel
     title  =  dict .keys()
     #sort the key
     title.sort()
     clo_num  =  len ( dict .keys())
     styleBoldRed    =  xlwt.easyxf( 'font: color-index red, bold on' )
     headerStyle  =  styleBoldRed
     if  not  os.path.exists(filename):
         wb  =  xlwt.Workbook()
         ws  =  wb.add_sheet( 'count' )
         for  in  range (clo_num):
             ws.write( 0 ,i,title[i],headerStyle)
             ws.write( 1 ,i, dict [title[i]])
             wb.save(table)
     
     else :
         oldWb  =  xlrd.open_workbook(table,formatting_info  =  True )
         newWb  =  copy(oldWb)
         newWs  =  newWb.get_sheet( 0 )
         
         num  =  count_rows(filename)
         
         for  in  range (clo_num):
             newWs.write(num,i, dict [title[i]])
             
         newWb.save(table)    
def  start():
     global  filename
     global  table
     t_date  =  datetime.date.today().strftime( "%Y_%m_%d" )
     t_name  =  'report_%s.xls'  % (t_date)
     filename  =  r '/home/python/%s'  % (t_name)
     
     ip_list  =  []
     for  in  range ( 1 , 255 ):
         ip_list.append( '172.20.113.' + str (i))
     #print ip_list
     print ( "please wait..." )
     #计算时间
     time_start = time.time()
     #创建线程
     for  ip  in  ip_list:
     #    pid = os.fork()
     #    if not pid:
         ip_scan(ip)
     #sys.exit()
     time_end = time.time()
     t = time_end - time_start
     print  '*' * 48
     print  '\nTime:' + str (t) + 's'
     print  'Scan results have been saved to test.\n'
     print  '*' * 48
            
  
     
if  __name__  = =  '__main__' :
     """ 
     filename = r'/home/wangpeng/python/test1.xls'
     table = 'test1.xls'
     ip_list = ['172.20.113.57','172.20.113.47','172.20.113.10']
     for ip in ip_list:
         ip_scan(ip)
     """
     start()









本文转自 wangpengtai  51CTO博客,原文链接:http://blog.51cto.com/wangpengtai/1904855,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
人工智能 Java Linux
Python高效实现Excel转PDF:无Office依赖的轻量化方案
本文介绍无Office依赖的Python方案,利用Spire.XLS、python-office、Aspose.Cells等库实现Excel与PDF高效互转。支持跨平台部署、批量处理、格式精准控制,适用于服务器环境及自动化办公场景,提升转换效率与系统稳定性。
312 7
|
1月前
|
机器学习/深度学习 监控 数据挖掘
Python 高效清理 Excel 空白行列:从原理到实战
本文介绍如何使用Python的openpyxl库自动清理Excel中的空白行列。通过代码实现高效识别并删除无数据的行与列,解决文件臃肿、读取错误等问题,提升数据处理效率与准确性,适用于各类批量Excel清理任务。
354 0
|
5月前
|
Python
掌握Python装饰器:轻松统计函数执行时间
掌握Python装饰器:轻松统计函数执行时间
383 76
|
4月前
|
开发工具 Python
使用Python和OpenAPI将云上的安全组规则填写入Excel
本文介绍如何通过Python脚本自动化获取阿里云安全组及其规则信息,并将结果导出为Excel表格。相比CLI命令行方式,Python实现更高效、便捷,适用于需要批量处理和交付的场景。
使用Python和OpenAPI将云上的安全组规则填写入Excel
|
4月前
|
存储 监控 算法
基于 Python 跳表算法的局域网网络监控软件动态数据索引优化策略研究
局域网网络监控软件需高效处理终端行为数据,跳表作为一种基于概率平衡的动态数据结构,具备高效的插入、删除与查询性能(平均时间复杂度为O(log n)),适用于高频数据写入和随机查询场景。本文深入解析跳表原理,探讨其在局域网监控中的适配性,并提供基于Python的完整实现方案,优化终端会话管理,提升系统响应性能。
135 4
|
6月前
|
机器学习/深度学习 数据采集 数据可视化
Python数据分析,别再死磕Excel了!
Python数据分析,别再死磕Excel了!
295 2
|
7月前
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
252 7
|
7月前
|
运维 监控 算法
基于 Python 迪杰斯特拉算法的局域网计算机监控技术探究
信息技术高速演进的当下,局域网计算机监控对于保障企业网络安全、优化资源配置以及提升整体运行效能具有关键意义。通过实时监测网络状态、追踪计算机活动,企业得以及时察觉潜在风险并采取相应举措。在这一复杂的监控体系背后,数据结构与算法发挥着不可或缺的作用。本文将聚焦于迪杰斯特拉(Dijkstra)算法,深入探究其在局域网计算机监控中的应用,并借助 Python 代码示例予以详细阐释。
197 6
|
8月前
|
监控 算法 安全
基于 Python 广度优先搜索算法的监控局域网电脑研究
随着局域网规模扩大,企业对高效监控计算机的需求增加。广度优先搜索(BFS)算法凭借其层次化遍历特性,在Python中可用于实现局域网内的计算机设备信息收集、网络连接状态监测及安全漏洞扫描,确保网络安全与稳定运行。通过合理选择数据结构与算法,BFS显著提升了监控效能,助力企业实现智能化的网络管理。
175 7
|
10月前
|
存储 算法 安全
控制局域网上网软件之 Python 字典树算法解析
控制局域网上网软件在现代网络管理中至关重要,用于控制设备的上网行为和访问权限。本文聚焦于字典树(Trie Tree)算法的应用,详细阐述其原理、优势及实现。通过字典树,软件能高效进行关键词匹配和过滤,提升系统性能。文中还提供了Python代码示例,展示了字典树在网址过滤和关键词屏蔽中的具体应用,为局域网的安全和管理提供有力支持。
183 17

推荐镜像

更多