python找人脚本_python获取机器信息脚本(网上寻找的)

获取机器信息(待测试)

# -*- coding: UTF-8 -*-

import psutil

import json

import os

import socket

import struct

import time

import sys

# 当前时间函数

def now_time():

now_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))

return now_time

# 获取硬盘信息函数

def disk_info():

disk_dict = {}

disk_name = []

disk_parttions = psutil.disk_partitions()

for i in range(len(disk_parttions)):

parttions_name = disk_parttions[i].device

mountpoint = disk_parttions[i].mountpoint

mountfstype = disk_parttions[i].fstype

disk_info = psutil.disk_usage(mountpoint)

total = disk_info.total

used = disk_info.used

free = disk_info.free

disk_io = psutil.disk_io_counters(perdisk=True)

disk_name.append(str(parttions_name.split('/', parttions_name.count('/'))[-1]))

for key1 in disk_name:

tmp_disk_list = []

for key2 in disk_io.keys():

tmp_disk_list.append(key2)

if key1 in tmp_disk_list:

disk_dict[parttions_name] = {

"read_bytes": disk_io[key1].read_bytes,

"write_bytes": disk_io[key1].write_bytes,

"read_count": disk_io[key1].read_count,

"write_count": disk_io[key1].write_count,

"mountpoint": mountpoint,

"mountfstype": mountfstype,

"total": total,

"used": used,

"free": free

}

else:

pass

return disk_dict

# 获取内存信息函数

def mem_info():

mem_dict_list = psutil.virtual_memory()

mem_total = mem_dict_list.total

mem_used = mem_dict_list.used

mem_free = mem_dict_list.free

cpu_use = psutil.cpu_percent(interval=True)

host_runtime = psutil.boot_time()

mem_list_info = {

"mem_total": mem_total,

"mem_used": mem_used,

"mem_free": mem_free,

"cpu_used": cpu_use,

"host_run": host_runtime

}

return mem_list_info

# 获取CPU信息函数

def cpu_info():

cpu_use = psutil.cpu_percent(interval=True)

cpu_usage = {

"cpu_used": cpu_use

}

return cpu_usage

# 获取网卡信息函数

def net_info():

net_dict_list = {}

net_dev = psutil.net_io_counters(pernic=True)

for dev_name in net_dev.keys():

net_dict_list[dev_name] = {

"RX_b": net_dev[dev_name].bytes_recv,

"TX_b": net_dev[dev_name].bytes_sent,

"Dropout": net_dev[dev_name].dropout,

"Dropint": net_dev[dev_name].dropin

}

return net_dict_list

# 获取用户信息函数

def user_info():

user_dict_list = []

user_dict = psutil.users()

for i in range(len(user_dict)):

user_dict_tmp = {}

user_dict_tmp[user_dict[i].name] = {

"terminal": user_dict[i].terminal,

"host": user_dict[i].host,

"start_time": user_dict[i].started

}

user_dict_list.append(user_dict_tmp)

return user_dict_list

# 获取内存消耗前10的进程函数

def process_info():

process_dict_list_tmp = []

pid_dict = psutil.pids()

for i in pid_dict:

pid = psutil.Process(i)

pid_tuple = (i, pid.name(), pid.memory_percent(), pid.create_time(), pid.status(), pid.cwd(), pid.exe())

process_dict_list_tmp.append(pid_tuple)

process_dict_list_tmp.sort(key=lambda mem1: mem1[2], reverse=True)

process_dict_list = process_dict_list_tmp[0:10]

return process_dict_list

# 获取开机时间函数

def runtime_info():

host_runtime = psutil.boot_time()

host_run_time = {

"host_runtime": host_runtime

}

return host_run_time

# 没用的函数

def get_info():

host_info = {

'disk_info': disk_info(),

'mem_info': mem_info(),

'cpu_info': cpu_info(),

'net_info': net_info(),

'process_info': process_info(),

'user_info': user_info(),

'runtime_info': runtime_info()

}

return repr(host_info)

# socket数据发送函数

def socket_send(socket_server=None, socket_port=None, cammds=None, type=None, PackName=None):

if type == 'regs':

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect((socket_server, socket_port))

s.sendall(cammds)

request = str(s.recv(18))

s.close()

return request

elif type == 'data':

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect((socket_server, socket_port))

s.sendall(cammds)

request = str(s.recv(128))

if request == 'OK':

Rtime = now_time()

PackSize = sys.getsizeof(cammds)

print(" '%s' : transfer TCP Package '%s' Size '%s' sucessful ") % (Rtime, PackName, PackSize)

s.close()

# 构架TCP格式数据包函数

def trans_pack(commands=None, type=None):

Net_type = 4 # package versions

Mem_type = 1

Cpu_type = 2

Disk_type = 3

Runtime_type = 5

if type == 'Mem':

machine_number = json_conf()["machine_number"] # 获取机器码

body = json.dumps(dict(commands)) # 生成JSON格式包体

header = [Mem_type, body.__len__(), machine_number] # 组成包头格式为:版本,包体长度,机器码

headPack = struct.pack("!3I", *header) # 生成包头

sendPack = headPack + body.encode() # 构建TCP数据包

return sendPack

elif type == 'Net':

machine_number = json_conf()["machine_number"] # 获取机器码

body = json.dumps(dict(commands)) # 生成JSON格式包体

header = [Net_type, body.__len__(), machine_number] # 组成包头格式为:版本,包体长度,机器码

headPack = struct.pack("!3I", *header) # 生成包头

sendPack = headPack + body.encode() # 构建TCP数据包

return sendPack

elif type == 'Cpu':

machine_number = json_conf()["machine_number"] # 获取机器码

body = json.dumps(dict(commands)) # 生成JSON格式包体

header = [Cpu_type, body.__len__(), machine_number] # 组成包头格式为:版本,包体长度,机器码

headPack = struct.pack("!3I", *header) # 生成包头

sendPack = headPack + body.encode() # 构建TCP数据包

return sendPack

elif type == 'Disk':

machine_number = json_conf()["machine_number"] # 获取机器码

body = json.dumps(dict(commands)) # 生成JSON格式包体

header = [Disk_type, body.__len__(), machine_number] # 组成包头格式为:版本,包体长度,机器码

headPack = struct.pack("!3I", *header) # 生成包头

sendPack = headPack + body.encode() # 构建TCP数据包

return sendPack

elif type == 'Run':

machine_number = json_conf()["machine_number"] # 获取机器码

body = json.dumps(dict(commands)) # 生成JSON格式包体

header = [Runtime_type, body.__len__(), machine_number] # 组成包头格式为:版本,包体长度,机器码

headPack = struct.pack("!3I", *header) # 生成包头

sendPack = headPack + body.encode() # 构建TCP数据包

return sendPack

# 读取JSON配置函数

def json_conf():

a = os.getcwd()

# os.chdir("%s/client/conf" % a) # 改变工作目录为JSON文件目录

json_list = file("%s/client/conf/client_conf.json" % a) # 读取JSON配置文件

m = json_list.read()

json_list.seek(0)

json_conf = json.loads(json_list.read()) # 取出JSON配置文件

json_list.close()

return json_conf

def json_write(command=None):

a = os.getcwd()

os.chdir("%s/client/conf" % a)

print(command)

b = type(command)

m = open("client_conf.json", 'w')

# agent第一次注册函数

def client_regs():

host_info = json.dumps({'ip': str(json_conf()['local_adder']), 'mac': str(json_conf()['local_mac'])})

regs_addr = json_conf()['send_server']

regs_port = json_conf()['server_regs_port']

server_request = str(socket_send(socket_server=regs_addr, socket_port=regs_port, cammds=host_info, type='regs'))

conf = json_conf()

conf['machine_number'] = server_request

conf = json.dumps(conf)

json_write(command=conf)

# 数据包发送函数

def send_data():

DiskPack = trans_pack(commands=disk_info(), type='Disk') # 生成TCP数据包

MemPack = trans_pack(commands=mem_info(), type='Mem')

NetPack = trans_pack(commands=net_info(), type='Net')

regs_addr = json_conf()['send_server'] # 获取服务器地址

regs_port = json_conf()['send_port'] # 获取服务器端口

socket_send(socket_server=regs_addr, socket_port=regs_port, cammds=DiskPack, type='data',

PackName='DiskPack') # 向服务器发送数据包

socket_send(socket_server=regs_addr, socket_port=regs_port, cammds=MemPack, type='data', PackName='MemPack')

socket_send(socket_server=regs_addr, socket_port=regs_port, cammds=NetPack, type='data', PackName='NetPack')

time.sleep(json_conf()['sendoff_time']) # 等待延时

def check_client():

print('start get client info....')

machine_number = json_conf()['machine_number']

if machine_number:

print(machine_number)

print(11111)

else:

print(machine_number)

print(22222)

if __name__ == '__main__':

while True:

send_data()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值