一:Agent方式

原理:在每台服务器装上agent客户端程序,定时向数据库发送指定的资产信息。

优点:速度快。

缺点:服务器上需要多装一个软件

 1 import subprocess
 2 import requests
 3 # pip3 install requests
 4 
 5 # ################## 采集数据 ##################
 6 # result = subprocess.getoutput('ipconfig')
 7 # result正则处理获取想要数据
 8 
 9 # 整理资产信息
10 # data_dict ={
11 #     'nic': {},
12 #     'disk':{},
13 #     'mem':{}
14 # }
15 
16 # ##################  发送数据 ##################
17 # requests.post('http://www.127.0.0.1:8000/assets.html',data=data_dict)

agent实现方式

 

 

二:SSH方式

原理:中间组件主动向服务器获取资产信息,然后由中间件向数据库添加数据(通过api)

优点:服务器端不用安装客户端版软件

缺点:慢

 1 # 基于paramiko模块, pip3 install paramiko
 2 import requests
 3 import paramiko
 4 
 5 # ################## 获取今日未采集主机名 ##################
 6 #result = requests.get('http://www.127.0.0.1:8000/assets.html')
 7 # result = ['c1.com','c2.com']
 8 
 9 
10 # ################## 通过paramiko连接远程服务器,执行命令 ##################
11 # 创建SSH对象
12 ssh = paramiko.SSHClient()
13 # 允许连接不在know_hosts文件中的主机
14 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
15 # 连接服务器
16 ssh.connect(hostname='192.168.14.36', port=22, username='wupeiqi', password='123')
17 
18 # 执行命令
19 # stdin, stdout, stderr = ssh.exec_command('df')
20 
21 # 获取命令结果
22 # result = stdout.read()
23 
24 # 关闭连接
25 # ssh.close()
26 # print(result)
27 
28 # data_dict = {result}
29 
30 # ##################  发送数据 ##################
31 # requests.post('http://www.127.0.0.1:8000/assets.html',data=data_dict)

SSH采集方式

 

 

 三:Saltstack方式

原理:和第二种类似,只不过基于第三方软件,中间件向队列中放请求,客户端向队列中不停接收请求,一旦接收到请求,服务器解析后发现需要自己返回资产信息,就执行命令并将返回结果放入另一个队列,中间件从结果队列中取数据,然后通过API存入数据库

优点:速度快,开发成本低

缺点:依赖第三方软件

 1 # 1. 安装saltstack
 2 #       rpm --import https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub
 3 #
 4 #
 5 """
 6         Master: yum install salt-master
 7        Master准备:
 8             a. 配置文件,监听本机IP
 9                 vim /etc/salt/master
10                 interface: 本机IP地址
11             b. 启动master
12                 /etc/init.d/salt-master start
13 
14 
15         Slave:  yum install salt-minion
16         Slave准备:
17             a. 配置文件,连接那个master
18                 vim /etc/salt/minion
19                 master: 远程master地址
20             b. 启动slave
21                 /etc/init.d/salt-minion start
22 
23 2. 创建关系
24     查看
25     Master:salt-key -L
26         Accepted Keys:
27         Denied Keys:
28         Unaccepted Keys:
29             c1.com
30             c2.com
31             c3.com
32         Rejected Keys:
33     接受
34     Master:salt-key -a c1.com
35         Accepted Keys:
36             c1.com
37             c2.com
38         Denied Keys:
39         Unaccepted Keys:
40             c3.com
41         Rejected Keys:
42 
43 
44 3. 执行命令
45     master:
46         salt 'c1.com' cmd.run  'ifconfig'
47 
48     import salt.client
49     local = salt.client.LocalClient()
50     result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])
51 
52 """
53 # ################## 获取今日未采集主机名 ##################
54 #result = requests.get('http://www.127.0.0.1:8000/assets.html')
55 # result = ['c1.com','c2.com']
56 
57 
58 # ################## 远程服务器执行命令 ##################
59 # import subprocess
60 # result = subprocess.getoutput("salt 'c1.com' cmd.run  'ifconfig'")
61 #
62 # import salt.client
63 # local = salt.client.LocalClient()
64 # result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])
65 
66 
67 # ##################  发送数据 ##################
68 # requests.post('http://www.127.0.0.1:8000/assets.html',data=data_dict)

Saltstack

 

 四:puppet

原理:服务器端主动向中间件发送数据,中间件将数据通过API存入数据库。

优点:自动向中间件服务器提供数据

缺点:中间件puppet使用ruby开发

 

版权声明:本文为sun-10387834原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/sun-10387834/p/12585349.html