具体的项目目录结构如下:
目录详情:
- /func/main.py 程序主入口;
- /conf/settings.py 配置文件,用于保存用户名、密码、url 等数据;
- /func/hosts/.py 定义各个参数获取的方法;
- /func/task/.py 调用 salt-api 执行命令;
settings.py
HOST_FUNC_DIC = { 'disk': 'func.hosts.disk.Disk', 'mem': 'func.hosts.mem.Mem', 'cpu': 'func.hosts.cpu.Cpu', 'os': 'func.hosts.os.Os', 'ip': 'func.hosts.ip.Ip', } HOST_LI = ['mem'] SALT_API_CON = "https://192.168.171.173:8001/" SALT_USERNAME = 'saltapi' SALT_PASSWORD = 'XXXXXX'
run.py作为获取资源的主程序,代码如下:
import importlib import os, sys BASEDIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.append(BASEDIR) ##将文件path加入环境变量 from conf.settings import HOST_FUNC_DIC from conf.settings import HOST_LI from func.task.get_data import send_main for host in HOST_LI: path = HOST_FUNC_DIC.get(host) module_path, class_name = path.rsplit('.', maxsplit=1) module = importlib.import_module(module_path) disk_class = getattr(module, class_name) JG = disk_class() func = JG.run() JG1 = send_main(func)
/func/task/get_data.py
import requests import json try: import cookielib except: import http.cookiejar as cookielib # 使用urllib2请求https出错,做的设置 import ssl context = ssl._create_unverified_context() from func.task.salt_client import SaltApi from conf.settings import SALT_API_CON # 使用requests请求https出现警告,做的设置 from requests.packages.urllib3.exceptions import InsecureRequestWarning requests.packages.urllib3.disable_warnings(InsecureRequestWarning) def send_main(params): salt = SaltApi(SALT_API_CON, params) result1 = salt.salt_command() if __name__ == '__main__': send_main({'client': 'local', 'fun': '192.168.171.172', 'tgt': 'test.ping'})
/func/task/salt_client.py
import json import requests # from conf.settings import SALT_API_CON from conf.settings import SALT_USERNAME from conf.settings import SALT_PASSWORD class SaltApi: def __init__(self, url, params): ##定义salt api接口的类,初始化获得token self.url = url self.username = SALT_USERNAME self.password = SALT_PASSWORD self.params = params self.headers = { ##设置初始化header头信息 "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36", "Content-type": "application/json" } self.login_url = url + "login" ##地址拼接 self.login_params = {'username': self.username, 'password': self.password, 'eauth': 'pam'} # self.token = self.get_data(self.login_url, self.login_params)['token'] self.token = self.get_data(self.login_url, self.login_params).get('token') self.headers['X-Auth-Token'] = self.token def get_data(self, url, params): send_data = json.dumps(params) request = requests.post(url, data=send_data, headers=self.headers, verify=False) response = request.json() result = dict(response) # print result return result['return'][0] def salt_command(self, tgt, method, arg=None): """远程执行命令,相当于salt 'client1' cmd.run 'free -m'""" if arg: params = {'client': 'local', 'fun': method, 'tgt': tgt, 'arg': arg} else: params = {'client': 'local', 'fun': method, 'tgt': tgt} result = self.get_data(self.url, params) return result
mem.py
from func.hosts.main import Base #加载自定义的一个类 class Disk(Base): def run(self): self.method="cmd.run" self.tgt="*" self.arg="free -m" return {"client":"local", "fun":self.method, "tgt":self.tgt, "arg":self.arg}
cpu.py
from func import Main Class Cpu(Mian) def run(self) self.method = 'cmd.run' self.tgt = 'hc-02' self.agr = 'cat /proc/cpuinfo' #print ('run...cpu') retrun {'client':'local', 'func':self.method, 'tgt':self.tgt, 'arg':self.arg}
/func/hosts/main.py
main.py 定义基类,该类中定义 run 方法,其余的参数类均继承该类 若其余类未定义 run 方法,则会调用父类的 run 方法,从而给出提示信息;class Base(object): def __init__(self): self.method = '' self.tgt = '' self.arg = '' def run(self): raise NotImplementedError('Not run func')
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- springmvc 请求参数解析细节
- linux curl请求时参数被截断
- 后台接收Json请求参数兼容数组和单个对象
- C# WebApi Get请求方式传递实体参数
- 封装axios请求并对提交参数进行校验
- SpringBoot学习之-通过一个请求可以获得多少参数
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
社交电商
[美] Stephan Spencer(斯蒂芬.斯宾塞)、[美] Jimmy Harding(吉米.哈丁)、[美] Jennifer Sheahan(詹尼弗.希汉) / 谭磊 / 电子工业出版社 / 2015-3 / 69.00元
你想要在互联网上赚钱吗?想要做好电子商务吗?那么你一定不能忽视社交媒体的力量。不管你想要营销的是实物商品、电子类产品还是本地的服务,这本书会教你怎么做。 《社交电商》全面介绍形形色色的社交媒体以及如何利用这些社交媒体来为你的企业做好服务。如果你经营得不好,在社交媒体上散发出的只是噪声而不是真正的信息。 而如果做得好,社交媒体会成为你最有效的营销工具,帮助你赢得老客户的拥戴,获得新的客户。 ......一起来看看 《社交电商》 这本书的介绍吧!
MD5 加密
MD5 加密工具
html转js在线工具
html转js在线工具