Python获取Linux基础信息

Python获取Linux基础信息

在linux中,有的时候我们需要查看机器的各种信息,比如ip地址、系统版本、主机名称等,一个一个的敲命令也能获取想要的信息,但是特别的麻烦,为何不让它把我们需要的所有信息打印出来呢,这样就不用一个一个去手动敲命令了。如何实现呢,Python就可以实现此功能,现在的Linux系统绝大部分都预装了Python环境,所以特别的方便。

测试环境:Ubuntu16.04

运行环境:Python2.7

代码下载地址:https://github.com/tianbin1990/python

from subprocess import Popen, PIPE
 import re
  
 #获取主机名,也可以使用 uname -n 命令获取
 def hostname():
 hostname = Popen(["hostname"], stdout=PIPE)
 hostname = hostname.stdout.read()
 return hostname
  
 #获取操作系统版本
 def osversion():
 with open("/etc/redhat-release") as f:
 osversion = f.read()
 return osversion
  
 #获取操作系统内核版本
 def oscoreversion():
 oscoreversion = Popen(["uname", "-r"], stdout=PIPE)
 oscoreversion = oscoreversion.stdout.read()
 return oscoreversion
  
 #获取CPU相关信息,如果存在多种不同CPU,那么CPU型号统计的为最后一种型号,这种情况少见
 def cpuinfo():
 corenumber = []
 with open("/proc/cpuinfo") as cpuinfo:
 for i in cpuinfo:
 if i.startswith("processor"):
 corenumber.append(i)
 if i.startswith("model name"):
 cpumode = i.split(":")[1]
 return corenumber, cpumode #调用此函数需要用两个变量来接收参数
  
 #获取内存相关信息
 def meminfo():
 with open("/proc/meminfo") as meminfo:
 for i in meminfo:
 if i.startswith("MemTotal"):
 totalmem = i.split(":")[1]
 return totalmem
  
 #获取服务器硬件相关信息
 def biosinfo():
 biosinfo = Popen(["dmidecode", "-t", "system"], stdout=PIPE)
 biosinfo = biosinfo.stdout.readlines()
  
 for i in biosinfo:
 if "Manufacturer" in i:
 manufacturer = i.split(":")[1]
 if "Serial Number" in i:
 serialnumber = i.split(":")[1]
 return manufacturer, serialnumber #调用此函数需要使用两个变量接收参数
  
 #获取网卡信息,包括网卡名,IP地址,MAC地址
 def ipaddrinfo():
  
 #定义存储格式,以网卡名为key,mac地址和ip地址为一个列表,这个列表又为这网卡名的value
 def add(dic, key, value):
 dic.setdefault(key, [ ]).append(value)
  
 ipinfo = Popen(["ip", "addr"], stdout=PIPE)
 ipinfo = ipinfo.stdout.readlines()
  
 dict1 = {}
 for i in ipinfo:
 if re.search(r"^\d", i):
 devname = i.split(": ")[1]
 continue
 if re.findall("ether", i):
 devmac = i.split()[1]
 add(dict1, devname, devmac)
 continue
 if re.findall("global", i):
 devip = i.split()[1]
 add(dict1, devname, devip)
 continue
 return dict1
  
 if __name__ == "__main__":
 hostname = hostname()
 osversion = osversion()
 oscoreversion = oscoreversion()
 totalmem = meminfo()
 cpunumber, cpumode = cpuinfo()
 manufacturer, serialnumber = biosinfo()
 ipinfo = ipaddrinfo()
 print("%s:\t\t %s" %("主机名", hostname)),
 print("%s:\t %s" %("系统版本", osversion)),
 print("%s:\t %s" %("系统内核版本", oscoreversion)),
 print("%s:\t %s" %("总内存", totalmem)),
 print("%s:\t%s" %("CPU生厂商", cpumode)),
 print("%s:\t %s" %("CPU总核心数", len(cpunumber)))
 print("%s:\t%s" %("服务器生厂商", manufacturer)),
 print("%s:\t%s" %("服务器序列号", serialnumber)),
 for x in ipinfo:
 y = ipinfo.get(x)
 ip = y[1]
 mac = y[0]
 print("%s%s:\t %s\t%s" %("网卡", x, ip, mac))

以上结果经CentOS 7和CentOS 6测试没有问题,今天的分享就到这了,感谢支持。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值