需求
公司准备搬迁,需要统计一下公司IT固定资产,打开前任的统计表格,里面没有详细配置。根据自己的现有知识跟想法来进行设计主动上传各个电脑及服务器的配置信息到指定路径。
想法:
设计软件——域服务器(部署软件ou)——软件自动运行(bat启动ou)——软件运行保存配置信息,并上传到FTP服务器——删除软件——手动从FTP服务器获取带有电脑名的文档(it.txt)里面含有配置信息
思路是可以的 ,想了解一下的可以看一下。。。。。
设计环境:
python 编程语言 + pycharm 5.0.3 +域控环境(ad域服务器+域内FTP服务器+域内pc)+info.py(获取配置信息)+ setup.py(打包成MSI文件)
内容:
1、域控策略—OU
发布办公室软件
组策略管理→组织单位(部门)→创建策略(OU)→命名为“软件”→右击编辑→用户配置下→策略→软件设置→软件安装→右击新建→数据包→网络(此路径必须为网络)→源PC→找到共享文件夹下的.MSI软件→打开→已分配(分配为强制安装,发布时客户端具有自主性)→强制更新策略(gpupdate /force).
创建启动策略
组策略管理→组织单位(部门)→创建策略(OU)→命名为“softwarestart”→右击编辑→用户配置下→策略→windows设置→脚本(登陆/注销)→登陆→属性→添加→网络(此路径必须为网络)→源PC→找到共享文件夹下的.bat文件→确定→强制更新策略(gpupdate /force).
后缀为.bat文件内容:start /d “C:\Program Files\info” info.exe
2、python设计代码
—–软件获取配置信息(info.py)
from ftplib import FTP
import wmi
import os
class information:
w = wmi.WMI()
list=[]
path= "c:/systeminfo"
fileName=path+"/"+os.environ['COMPUTERNAME']+".txt" #文件本地路径
ftpfile="/it/info/"+os.environ['COMPUTERNAME']+".txt" #文件上传路径(文件夹需要自己手动创建)
class INFO(information):
def __init__(self):
self.info()
#获取配置信息
def info(self):
information.list.append("电脑信息")
for BIOSs in information.w.Win32_ComputerSystem():
information.list.append("电脑名称: %s" %BIOSs.Caption)
information.list.append("使 用 者: %s" %BIOSs.UserName)
for address in information.w.Win32_NetworkAdapterConfiguration(ServiceName = "e1dexpress"):
information.list.append("IP地址: %s" % address.IPAddress[0])
information.list.append("MAC地址: %s" % address.MACAddress)
for BIOS in information.w.Win32_BIOS():
information.list.append("使用日期: %s" %BIOS.Description)
information.list.append("主板型号: %s" %BIOS.SerialNumber)
for processor in information.w.Win32_Processor():
information.list.append("CPU型号: %s" % processor.Name.strip())
for memModule in information.w.Win32_PhysicalMemory():
totalMemSize=int(memModule.Capacity)
information.list.append("内存厂商: %s" %memModule.Manufacturer)
information.list.append("内存型号: %s" %memModule.PartNumber)
information.list.append("内存大小: %.2fGB" %(totalMemSize/1024**3))
for disk in information.w.Win32_DiskDrive(InterfaceType = "IDE"):
diskSize=int(disk.size)
information.list.append("磁盘名称: %s" %disk.Caption)
information.list.append("磁盘大小: %.2fGB" %(diskSize/1024**3))
for xk in information.w.Win32_VideoController():
information.list.append("显卡名称: %s" %xk.name)
class fileHandling(information):
def __init__(self):
self.file()
self.write()
#判断文件夹(路径)是否存在
def file(self):
if not os.path.exists(information.path):
#创建文件夹(文件路径)
os.makedirs(information.path)
#写入数据
def write(self):
with open(information.fileName,'w+') as f:
for li in information.list:
l=li+"\n"
f.write(l)
#上传、下载FTP文件
class FTPFile(information):
def __init__(self,host,port,username,password):
self.ftp = FTP()
self.host=host #FTP主机IP地址
self.port=port #FTP主机端口号
self.username=username #FTP主机登录名
self.password=password #FTP主机登录密码
self.ftpconnect()
self.uploadfile()
def ftpconnect(self):
self.ftp = FTP()
#ftp.set_debuglevel(2) #打开调试级别2,显示详细信息
self.ftp.connect(self.host, self.port) #连接
self.ftp.login(self.username, self.password) #登录,如果匿名登录则用空串代替即可
return self.ftp
def downloadfile(self):
bufsize = 1024 #设置缓冲块大小
fp = open(information.fileName,'wb') #以写模式在本地打开文件
self.ftp.retrbinary('RETR ' + information.ftpfile, fp.write, bufsize) #接收服务器上文件并写入本地文件
self.ftp.set_debuglevel(0) #关闭调试
fp.close() #关闭文件
def uploadfile(self):
bufsize = 1024
self.fp = open(information.fileName, 'rb')
self.ftp.storbinary('STOR '+ information.ftpfile , self.fp, bufsize) #上传文件
self.ftp.set_debuglevel(0)
self.fp.close()
infor=information()
INFOs=INFO()
fileHandlings=fileHandling()
uploadFTP=FTPFile("xxx0",xxx1,"xxx2","xxx3") #分别是;ftp服务器地址,端口号,登陆用户,密码
python设计代码
----打包成MSI软件(setup.py)
import sys import os.path from cx_Freeze import setup, Executable PYTHON_INSTALL_DIR = os.path.dirname(os.path.dirname(os.__file__)) build_exe_options = {"packages": [ "os","ftplib","wmi"]}#程序中使用的模块(包) base = None if sys.platform == "win32": base = "Win32GUI" setup( name = "info", #安装后文件夹名字 version = "0.1", #版本号 description = "获取电脑配置信息", #描述 options = {"build_exe": build_exe_options}, #打包文件路径,快捷键名称,快捷键放到桌面 executables = [Executable("g:\myapp\info.py",shortcutName="info",shortcutDir="DesktopFolder", base=base)])
3、程序打包:
运行cmd 命令提示符:Python g:\myapp\setup.py bdist_msi (打包成MSI文件)
Python g:\myapp\setup.py bulid (打包成EXE文件)