python脚本获取系统信息

#!/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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值