#!/usr/bin/env python3
import subprocess
###创建总字典
msg = {"CPU":0,"MEM":1,"DISK":2,"IP":3,"PORT":4,"USER":5}
###创建临时列表
msg_tmp = []
###获取CPU信息
cmd = 'cat /proc/cpuinfo'
ret = subprocess.getoutput(cmd)
line_ret = ret.split('\n')
for i in line_ret:
if i.strip().startswith('model name'):
cpu_type = i.strip().split(':')[1]
if i.strip().startswith('cpu cores'):
cpu_num = i.strip().split(':')[1]
cmd = 'uptime'
ret = subprocess.getoutput(cmd)
line_ret = ret.split(': ')[1].split(',')
avg = line_ret[0] + "%" +" " + line_ret[1] + "%" + " " +line_ret[2] + "%"
#将获取的CPU信息放入临时列表中
tmp_cpu = {"CPU型号:":cpu_type,"CPU核数:":cpu_num,"CPU平均负载":avg}
msg_tmp.append(tmp_cpu)
#获取内存信息
cmd = 'free -h'
ret = subprocess.getoutput(cmd)
line_ret = ret.split('\n')
for i in line_ret:
if i.strip().startswith('Mem:'):
mem_total = i.strip().split()[1]
mem_free = i.strip().split()[3]
#将获取的内存信息放入临时列表msg_tmp中
tmp_mem = {"总内存:":mem_total,"剩余内存:":mem_free}
msg_tmp.append(tmp_mem)
#获取磁盘信息
cmd = 'lsblk'
ret = subprocess.getoutput(cmd)
line_ret = ret.split('\n')
r_name = ["磁盘名称:"]
r_RL = ["磁盘容量:"]
r_all_name = []
r_all_RL = []
r_str_name = ''
r_str_RL = ''
for i in line_ret:
if 'disk' in i.strip():
r_name.append(i.strip().split()[0])
r_RL.append(i.strip().split()[3])
#将获取的磁盘信息放入临时列表msg_tmp中
for i in list(range(len(r_name))):
if i != 0:
r_str_name = r_str_name +" " +r_name[i]
r_str_RL = r_str_RL +" " +r_RL[i]
if i == len(r_name) - 1:
r_all_name.append(r_str_name)
r_all_RL.append(r_str_RL)
else:
r_all_name.append(r_name[i])
r_all_RL.append(r_RL[i])
tmp_raid = {r_all_name[0]:r_all_name[1],r_all_RL[0]:r_all_RL[1]}
msg_tmp.append(tmp_raid)
#获取ip地址
cmd = 'ifconfig'
ret = subprocess.getoutput(cmd)
line_ret = ret.split('\n')
ip_addr = ''
for i in line_ret:
if i.strip().startswith('inet') and 'inet' in i.strip().split():
if i.strip().split()[1] != '127.0.0.1':
ip_addr = ip_addr + " " + i.strip().split()[1]
#将获取到的ip地址放入临时列里msg_tmp中
tmp_ip = {"主机名:":subprocess.getoutput('hostname'),"IP地址:":ip_addr}
msg_tmp.append(tmp_ip)
cmd = 'ss -anpt'
ret = subprocess.getoutput(cmd)
line_port = ret.split('\n')
ports = ''
for i in line_port:
flag = i.split()[0]
if flag != 'State':
port = i.split()[3].split(':')[-1]
if port not in ports:
ports = ports +" "+ port
tmp_port = {"服务器开启的端口:":ports}
msg_tmp.append(tmp_port)
cmd = 'cat /etc/passwd'
ret = subprocess.getoutput(cmd)
line_ret = ret.split('\n')
list_name = ''
for i in line_ret:
list_uid = int(i.split(':')[2])
if list_uid > 1000 or list_uid == 1000: ###小于1000不算普通用户
list_name = ilst_name + " " + i.split(':')[0]
tmp_user = {"该服务器的所有普通用户为:":list_name}
msg_tmp.append(tmp_user)
#将临时列表中的元素更新到msg字典中
for k ,v in msg.items():
msg[k] = msg_tmp[v]
#将msg字典输出
for k ,v in msg.items():
print("%s:" % k)
for i , j in v.items():
print(i,j)
cmd = 'echo $USER'
ret = subprocess.getoutput(cmd)
print("当前登录的用户为:",ret)
cmd = 'date +%F-%T'
ret = subprocess.getoutput(cmd)
print("当前时间:",ret)
python脚本获取系统信息
最新推荐文章于 2025-12-04 22:56:41 发布
本文介绍了一个Python脚本,用于自动收集服务器的详细系统信息,包括CPU型号、核数及平均负载,内存总量与剩余量,磁盘名称及容量,IP地址,开放端口以及普通用户名单。
2084

被折叠的 条评论
为什么被折叠?



