ssh模式和salt模式的实现

 ssh模式和salt模式的实现思路

agent

  1. 每台服务器装一个agent

  2. 每天定时启动这个脚本

  3. 采集完成信息后发送一个机器 保存信息

三种模式:

agent —— 每台主机装上脚本(适用的场景:机器多)

  1. 每天定时启动脚本

  2. 脚本中通过subprocess模块 执行命令收集系统的信息

  3. 将采集的信息通过requests模块发送到api

  4. api接受数据保存数据库

ssh —— 脚本放在中控机(适用的场景:机器少 不需要安装软件)

  1. 每天定时启动脚本

  2. 从api获取今天要采集的主机列表

  3. 通过paramiko模块 远程连接上主机执行命令收集系统的信息

  4. 将采集的信息通过requests模块发送到api

  5. api接受数据保存数据库

salt—— 脚本放在中控机(适用的场景:安装saltstack 中控机装salt-master 被采集的主机安装salt-minion)

  1. 每天定时启动脚本

  2. 从api获取今天要采集的主机列表

  3. 通过subprocess或者salt 远程连接上主机执行命令收集系统的信息

  4. 将采集的信息通过requests模块发送到api

  5. api接受数据保存数据库

 

三种方式的代码

#  ###########   agent  ###########

# import subprocess
# import requests
#
# a = subprocess.getoutput('dir')
# print(a)
#
#
# url = 'http://127.0.0.1:8000/api/asset/'
#
# ret = requests.post(
#     url=url,
#     data={'msg':a},
# )
# print(ret.text)
# print(ret.json())


#  ###########   ssh  ###########

# import requests
#
# import paramiko
#
# # private_key = paramiko.RSAKey.from_private_key_file('/home/auto/.ssh/id_rsa')
#
# # 创建SSH对象
# ssh = paramiko.SSHClient()
#
# # 允许连接不在know_hosts文件中的主机
# ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
#
# # 连接服务器
# ssh.connect(hostname='10.0.0.128', port=22, username='root',password='1' )
#
# # 执行命令
# stdin, stdout, stderr = ssh.exec_command('ls')
# # 获取命令结果
# result = stdout.read()
#
# print(result.decode('utf-8'))
# # 关闭连接
# ssh.close()
#
#
# url = 'http://127.0.0.1:8000/api/asset/'
#
# ret = requests.post(
#     url=url,
#     data={'msg':result.decode('utf-8')},
# )
# print(ret.text)
# print(ret.json())


#  ###########   salt  ###########

import subprocess
ret = subprocess.getoutput("salt '{}' cmd.run '{}' ".format('*','ls'))



import salt.client
local = salt.client.LocalClient()
result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])

猜你喜欢

转载自www.cnblogs.com/machangwei-8/p/11311470.html