python3批量统计用户电脑配置
最近领导想统计一下用户电脑配置信息。好几百人难道让我一个一个的去弄吗?
想想还是写个程序接收一下吧。
客户端
# -*- coding: utf-8 -*-
#author:Guoyabin
import socket,psutil,os,sys class wininfo():
def ip_info(self):
hostname=socket.gethostname() #获取主机名
ipconfig=psutil.net_if_addrs().items() #所有网卡信息
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('114.114.114.114', 80))
addre = s.getsockname()[0] #获取ip地址
finally:
s.close() #关闭socket连接
for k,v in ipconfig:
try:
if addre in v[1].address:
mac=v[0].address #获取mac地址
'''
gateway=addre.split('.')[0]+'.'+addre.split('.')[1]+'.'+addre.split('.')[2]+'.1' #获取网关
if '10.8.70' in addre: #特殊网关
gateway='10.8.70.2'
os.system("netsh interface ip set address name=%s source=static addr=%s mask=255.255.255.0 gateway=%s gwmetric=1" % (k,addre,gateway)) #设置网关
'''
os.system("netsh interface ip set dns name=%s source=static addr=114.114.114.114" % k) #设置dns
except:
pass
ip=str(hostname)+' '+addre+' '+mac
return(ip) def mem_info(self):
mem_all=psutil.virtual_memory().total/1024/1024/1024 #获取内存大小
mem=round(mem_all) #取最接近整数的值
return(mem) def cpu_info(self):
try:
name=os.popen('wmic cpu get name').readlines()
cpuname1=name[-4].replace('\n','')
cpuname=cpuname1.replace(' ','') #获取Windows CPU型号
except:
cpuname=' '
cpucount=psutil.cpu_count() #获取CPU核心
cpu=str(cpuname)+' '+str(cpucount)
return(cpu) def disk_info(self):
sum=0
for i in psutil.disk_partitions():
try:
sum=sum+psutil.disk_usage(i.mountpoint).total #获取硬盘大小
except:
pass
disk=round(sum/1024/1024/1024) #取最接近整数的值
return(disk) def getname(self):
name=input('请输入您的名字:')
return(name) class linuxinfo(wininfo):
def getname(self):
name='name'
return(name) def cpu_info(self):
cpuname1=os.popen("grep -m1 'model name' /proc/cpuinfo |awk -F ':' '{print $2}'").readlines()
cpuname2=cpuname1[-1].replace(' ','')
cpuname=cpuname2.replace('\n','') #获取Linux CPU型号
cpucount=psutil.cpu_count() #获取CPU核心
cpu=str(cpuname)+' '+str(cpucount)
return(cpu) def ip_info(self):
hostname=socket.gethostname() #获取主机名
try:
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('114.114.114.114', 80))
addre = s.getsockname()[0] #获取ip地址
finally:
s.close() #关闭socket连接
ipconfig=psutil.net_if_addrs().items() #所有网卡信息
for k,v in ipconfig:
if addre in v[0].address:
mac=v[2].address #获取mac地址
ip=str(hostname)+' '+addre+' '+mac
return(ip) if __name__=='__main__':
serverip = '192.168.8.50'
port = 9999
client=socket.socket()
client.connect((serverip,port))
if sys.platform=='win32':
send=wininfo()
else:
send=linuxinfo()
data = str(send.getname())+' '+str(send.ip_info())+' '+str(send.cpu_info())+' '+str(send.mem_info())+' '+str(send.disk_info())
#print(data)
client.sendall(bytes(data,encoding='utf-8'))
client.close()
服务端,我直接把'密码接收器'程序修改了一下
# -*- coding:utf-8 -*-
#author:Guoyabin
import socketserver
import time class recvpasswd(socketserver.BaseRequestHandler):
def handle(self):
conn=self.request #封装所有对象请求
while True:
date=conn.recv(1024).decode()
if date=='exit':
break
if len(date)==0: #空数据则断开
break
#if '=>' not in date: #防止恶意数据写入
# break
print(date)
self.savepasswd(date) def savepasswd(self,passwd):
now=time.strftime("%Y-%m-%d %H:%M:%S")
errfile=open('passwd.txt','a')
errfile.write(now+' '+str(passwd)+'\n')
errfile.close() if __name__=='__main__':
server=socketserver.ThreadingTCPServer(('0.0.0.0',9999),recvpasswd)
server.serve_forever()
最终服务端看到的结果就是:

而且会在服务端同级目录生成password.txt文档。和命令提示符里显示的一样
python3批量统计用户电脑配置的更多相关文章
- expect 批量增加用户及配置密码
start.sh #!/bin/bash password="111111" username="test" if [ $# == 1 ] then usern ...
- Centos6配置samba服务器并批量添加用户和文件夹
一.需求 局域网内有若干用户,所有用户访问一个共享目录 每个用户在共享目录里有自己的文件夹 每个用户都可以读取其他人的文件夹 每个用户只能对自己的文件夹有写入权限 所有用户都属于filesgroup组 ...
- ansible批量管理常见的配置方法
第7章 ansible的管理 7.1 ansible概念的介绍 ansible-playbook –syntax 检查语法 ansible-playbook -C ...
- [工具] 分布式系统下批量创建用户及分发公钥打通ssh通道的脚本
在分布式系统下偶尔会有这样的需求,要增加一个服务时,需要在集群的所有节点上创建同一个用户,然后打通ssh通道,再分发软件包.配置.执行命令.启动服务... 这个问题的根源是如何集中配置和管理系统,专业 ...
- SERVER 2012 R2 core域环境下批量创建用户
Write by xiaoyang 转载请注明出处 步骤一:创建域 基本配置 1. 输入命令进入配置 2. 输入8进入网络配置 3. 选择要配置的网 ...
- 将iPhone5s中的相片批量下载到电脑中
前言:目前我还在使用iPhone5s这款手机,不过由于自己的无知,在使用手机的过程中发现有些用户的体验不是很好,特别是将手机中的相片批量下载到电脑中这件小事,和Android系统相关的手机相比更不好玩 ...
- linux 批量创建用户
user 模块添加用户 python -c 'from passlib.hash import sha512_crypt; import getpass; print (sha512_crypt.en ...
- 工程师技术(五):Shell脚本的编写及测试、重定向输出的应用、使用特殊变量、编写一个判断脚本、编写一个批量添加用户脚本
一.Shell脚本的编写及测 目标: 本例要求两个简单的Shell脚本程序,任务目标如下: 1> 编写一个面世问候 /root/helloworld.sh 脚本,执行后显示出一段话“Hello ...
- Linux账号管理与ALC权限设定(二) 批量增加用户脚本
接上篇.鸟哥提出了一个问题.就是 如果myuser1用户是这个项目的助理,他只能查看该目录下的内容,而无法修改删除.那该如何操作呢? 首先,不能将该用户加入projecta这个群组,否则他也可以修改删 ...
随机推荐
- 使用医学影像开源库cornerstone.js解析Dicom图像显示到HTML中
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- leetcode 264. 丑数 II 及 313. 超级丑数
264. 丑数 II 题目描述 编写一个程序,找出第 n 个丑数. 丑数就是只包含质因数 2, 3, 5 的正整数. 示例: 输入: n = 10 输出: 12 解释: 1, 2, 3, 4, 5, ...
- Cesium源码剖析---Post Processing之物体描边(Silhouette)
Cesium在1.46版本中新增了对整个场景的后期处理(Post Processing)功能,包括模型描边.黑白图.明亮度调整.夜视效果.环境光遮蔽等.对于这么炫酷的功能,我们绝不犹豫,先去翻一翻它的 ...
- React教程
教程 一.demo <!DOCTYPE html> <html> <head> <meta charset="UTF-8"/> &l ...
- python 使用sqlite,ConfigParser实例
此实例是本人公司真实场景,使用了VNC,ngrok 技术实现内网穿透,本例是对内网穿透的使用: 此例的最终效果是对于处于各地内网终端实现远程桌面监控及操作: 目前世面上也有一些软件实现了内网穿透(向日 ...
- javaObject类—hashCode方法
1 package face_object; 2 /* 3 * Object:所有类的根类. 4 * Object是不断抽取而来的,具备所有对象都具备的共性内容. 5 * 常用的共性功能: 6 * 7 ...
- linux磁盘管理(全面解析)
目录 一:磁盘管理 1.磁盘管理作用 2.磁盘挂载顺序 3.磁盘分区 4.Linux 磁盘管理常用命令 5.磁盘分区内容 二:linux中分区的意义 三:分区的步骤与顺序 1.添加磁盘 2.查看创建新 ...
- python 小兵(6)函数进阶
阅读目录 函数参数-动态参数 名称空间 函数的嵌套 gloabal.nonlocal 回到顶部 函数参数-动态参数 之前我们说过传参,如果我们在传参数的时候不很清楚有哪些的时候,或者说给一个函数传了很 ...
- 《Spring Boot 实战纪实》之过滤器
导航 什么是过滤器 Spring的过滤器 Filter定义 过滤的对象 典型应用 过滤器的使用 Filter生命周期 过滤器链 自定义敏感词过滤器 新增自定义过滤器 添加 @WebFilter注解 添 ...
- AI 智能写情诗、藏头诗
一.AI 智能情诗.藏头诗展示 最近使用PyTorch的LSTM训练一个写情诗(七言)的模型,可以随机生成情诗.也可以生成藏头情诗. 在特殊的日子用AI生成一首这样的诗,是不是很酷!下面分享下AI 智 ...