服务器资产自动收集,资产管理 cmdb之ansible 获取服务器硬件、软件等信息

cmdb抓取服务信息的方式有很多种,可以使用自动化工具saltstack、ansible、puppet,或者使用其它模块直接ssh远程连接抓取服务器信息。这里记录一下用ansible的API接口调用setup模块抓取。

实验使用两台机器

IP

系统

软件

192.168.93.137

centos6.5_x64

ansible 1.9.4

192.168.93.128

centos6.5_x64

两台机器建立好ssh信任后在192.168.93.137上执行

ansible 192.168.93.128 -m setup

b0dec1f044d21bc7a9627fa43c941565.png

将其封装成函数保存为test.py,(此处封装借鉴的一位高手,可惜忘了博客地址)

里面的参数根据各自的系统可适当修改

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

import ansible.runner

def get_info(ip):

data = {}

runner = ansible.runner.Runner(module_name=’setup’, module_args=”, pattern=’all’, forks=2)

datastructure = runner.run()

sn = datastructure[‘contacted’][ip][‘ansible_facts’][‘ansible_product_serial’]

host_name = datastructure[‘contacted’][ip][‘ansible_facts’][‘ansible_hostname’]

description = datastructure[‘contacted’][ip][‘ansible_facts’][‘ansible_lsb’][‘description’]

ansible_machine = datastructure[‘contacted’][ip][‘ansible_facts’][‘ansible_machine’]

sysinfo = ‘%s %s’ % (description, ansible_machine)

os_kernel = datastructure[‘contacted’][ip][‘ansible_facts’][‘ansible_kernel’]

cpu = datastructure[‘contacted’][ip][‘ansible_facts’][‘ansible_processor’][1]

cpu_count = datastructure[‘contacted’][ip][‘ansible_facts’][‘ansible_processor_count’]

cpu_cores = datastructure[‘contacted’][ip][‘ansible_facts’][‘ansible_processor_cores’]

mem = datastructure[‘contacted’][ip][‘ansible_facts’][‘ansible_memtotal_mb’]

ipadd_in = datastructure[‘contacted’][ip][‘ansible_facts’][‘ansible_all_ipv4_addresses’][0]

disk = datastructure[‘contacted’][ip][‘ansible_facts’][‘ansible_devices’][‘sda’][‘size’]

# print sysinfo

data[‘sn’] = sn

data[‘sysinfo’] = sysinfo

data[‘cpu’] = cpu

data[‘cpu_count’] = cpu_count

data[‘cpu_cores’] = cpu_cores

data[‘mem’] = mem

data[‘disk’] = disk

data[‘ipadd_in’] = ipadd_in

data[‘os_kernel’] = os_kernel

data[‘host_name’] = host_name

return data

if __name__ == ‘__main__’:

data = get_info(”)

import pprint

pprint.pprint(data)

在192.168.93.137上执行test.py获取192.168.93.128的服务器信息

39c4458a012e9e2f9fceb3a5d6569d9c.png

运维平台展示服务器信息

17afe983d99479bc5f6701c5d61ff340.png

按钮的id值最后一位就是192.168.93.128在数据库表中的id号

4a9a9b48777f83ed21226b3c9661ef09.png

(部署新java程序,程序报错,需copy的一个包)——java使用siger 获取服务器硬件信息

mcat-siger.sh  查看是否安装siger rsync -aPuv /usr/lib64/libsigar-amd64-linux.so $i:/usr/lib64/ java使用siger …

用python获取服务器硬件信息[转]

#!/usr/bin/env python # -*- coding: utf-8 -*- import rlcompleter, readline readline.parse_and_bind(‘ …

android获取当前软件版本号号和版本号名称

/** * 获取本地软件版本号 */ public static int getLocalVersion(C …

dotnet 通过 WMI 获取系统安装软件

本文告诉大家如何通过 WMI 获取系统安装的软件,这个方法不能获取全部的软件 通过 Win32_Product 可以获取系统安装的软件 var mc = “Win32_Product&quo …

C# 获取操作系统相关的信息

本文通过一个Demo,讲解如何通过C#获取操作系统相关的信息,如内存大小,CPU大小,机器名,环境变量等操作系统软件.硬件相关信息,仅供学习分享使用,如有不足之处,还请指正. 涉及知识点: Envir …

C#获取当前主机硬件信息

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T …

Android开发之获取手机SIM卡信息

TelephonyManager是一个管理手机通话状态.电话网络信息的服务类.该类提供了大量的getXxx(),方法获取电话网络的相关信息. TelephonyManager类概述: 可用于訪问有关设 …

ubuntu下升级特定软件与查看软件版本信息

ubuntu 升级软件: sudo apt-get update 更新源 sudo apt-get upgrade 更新已安装的包 sudo apt-get dist-upgrade 升级系统 ubu …

调用手机在线API获取手机号码归属地信息

手机在线(www.showji.com)始创于2001年,发展至今已拥有国内最准确.号段容量最大的手机号码归属地数据库系统, 目前号段容量将近33万条,每月保持两次以上规模数据更新,合作伙伴包括:百度 …

随机推荐

WebSocket异常 通常每个套接字地址(协议/网络地址/端口)只允许使用一次

websocket的实例:http://blog.csdn.net/for_cxc/article/details/51500185 问题: 新建一个连接通信没有问题,但是如果关闭再建立就会报错:通常 …

widows和Linux java加密注意事项

/** * @Title: EncrypAES.java * @Package com.weidinghuo.payment.util * @Description: TODO(用一句话描述该文件做什 …

使用ssh连接gitHub

github每次pull/push代码时要求推送代码的用户是合法的,所以每次推送时候都要输入账号密码用以验证用户是否为合法用户,而ssh是一种安全的传输模式,可以代替用户的这一”输入账号密码 …

(原)String类两种实例化的区别

String有两种实例化方式,一种是通过直接赋值的方式,另外一种是使用标准的new调用构造方法完成实例化. public class StringDemo { public static void m …

为 Macbook 安装 enca 命令

enca 是个查看.转换编码的开源软件, 地址: http://dl.cihar.com/enca/ 安装的步骤比安装 wget 简单多了: 1.用 wget 获取最新的enca 的 tar.gz 的 …

c#中的委托和事件(转)

引言 委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易.它们就像是一道槛儿,过了这个槛的人,觉得真是太容易了,而没有过去 …

初始Hibernate框架技术

hibernate: 定义:ORM:Object Relational Mapping 对象 关系 映射 使用hibernate时几个必要的: 1.实体类 2.映射文件(类  -数据库表,属性-字段) …

android listview 加载图片错乱(错位)

写道 今天晚上一个朋友介绍我看了一篇文章,也是解决android中listview在加载图片错位的问题,看了之后,感觉写的很好,自己也遇到这个问题,但是又不知道从何下手,看到这篇文章后,我的问题 …

agile学习

https://www.flickr.com/photos/codingthearchitecture/sets/

SUSE linux升级perl及openssl

一.perl安装: 1.下载并解压软件:tar zxvf perl-5.24.0.tar.gz 2.运行./configure.gnu -help查看帮助,运行./configure.gnu -des …

相关资源:vissim电子仿真软件-嵌入式文档类资源-CSDN文库

来源:丁石

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年6月26日
下一篇 2021年6月26日

相关推荐