前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python获取服务器信息

python获取服务器信息

作者头像
py3study
发布2020-01-10 11:16:11
2.1K0
发布2020-01-10 11:16:11
举报
文章被收录于专栏:python3python3

python 通过ansible 获取服务器基本信息:

  1. 利用ansible的 setup 模块可以返回服务器的详细信息

 所有的信息都是以字典的格式显示的

代码语言:javascript
复制
[root@e tmp]# ansible 192.168.137.152 -m setup 
192.168.137.152 | SUCCESS => {
    "ansible_facts": {
        "ansible_all_ipv4_addresses": [
            "192.168.137.152", 
            "192.168.137.156", 
            "172.17.42.1", 
            "192.168.122.1"
        ], 
        "ansible_all_ipv6_addresses": [
            "fe80::20c:29ff:fe29:eb74", 
            "fe80::20c:29ff:fe29:eb7e", 
            "fe80::1c62:8ff:fe8d:e9a2"
        ], 
        "ansible_architecture": "x86_64"
      ..........

2.利用subprocess模块执行命令,获取数据Disk、Memory、cpu等基础信息

代码语言:javascript
复制
#!/usr/bin/env python
#coding:utf-8
import json
import shlex
from subprocess import *


def server_info(ip):
  cmd = "/usr/bin/ansible {ip} -m setup".format(ip=ip)
  raw_info = subprocess.check_output(shlex.split(cmd))  #  check_output函数在python2.7以后版本才存在
  base_info = json.loads(raw_info.split('=>')[1])['ansible_facts']
  cpu = base_info['ansible_processor_vcpus']
  memory = round(int(base_info['ansible_memtotal_mb'])/1024.0,1)
  disk_info = base_info['ansible_devices']
  disk_volume = sum([int(disk_info[disk]['sectors'])*int(disk_info[disk]['sectorsize']) for disk in disk_info])/1024**3
  hostname = base_info['ansible_hostname']
  os = base_info['ansible_lsb']['description']
  print cpu,memory,disk_info,disk_volume,hostname,os
if __name__=="__main__":
  ip = "192.168.137.152"
  sever_info(ip)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档