博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
saltstack的rest接口salt-api开发—基于flask-restful
阅读量:6939 次
发布时间:2019-06-27

本文共 1770 字,大约阅读时间需要 5 分钟。

之前官方给的salt-api在前期用着也还不错,后来发现貌似不支持timeout选项(也许我太弱,也没研究过它cherrypy的框架),搞来搞去实在没办法就拿着flask重新封装了一层webapi。

刚学的flask,写的不好勿喷(完全是为了公司需求啊!!)

代码都放在github上了,基本功能OK,只去掉了根据公司需求自定义的一些功能类。

地址:

简单的搞了一个token验证,通过rest传过去的。这里就讲下具体的认证方式:

首先双方协商一个key,加上当先时间,到小时为止,然后hash出一个值作为最终的token,所以这个token是每小时都会变化的,双方协商好key就会自动生成。也可以精确到每十分之或者每分钟,具体看不同需求了。

1
2
3
4
5
6
7
8
9
10
11
12
class 
Token():
    
def 
__init__(
self
):
        
self
.now_time 
= 
time.strftime(
'%Y-%m-%d-%H'
,time.localtime(time.time()))
    
def 
getToken(
self
,key):
        
md5 
= 
hashlib.md5()
        
md5.update(
self
.now_time
+
key)
        
return 
md5.hexdigest()
    
def 
authToken(
self
,one_token,two_token):
        
if 
one_token 
=
= 
two_token:
            
return 
True
        
else
:
            
return 
False

这是一个请求的demo,自己修改para_dict里的value就行了,可以根据需求在para_dict中可以加上timeout的值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import 
commands,urllib
import 
time,sys
import 
hashlib
now_time 
= 
time.strftime(
'%Y-%m-%d-%H'
,time.localtime(time.time()))
key 
= 
'haha'
md5 
= 
hashlib.md5()
md5.update(now_time
+
key)
token 
= 
md5.hexdigest()
"""
para_dict={
    
"tgt":"200-119-0.jh.qszg.uuzu.idc",
    
"server_config":"true",
    
"token":token
}
"""
para_dict
=
{
    
"tgt"
:
"200-119-0.jh.qszg.uuzu.idc"
,
    
"fun"
:
"cmd.run"
,
    
"args"
:
"uptime"
,
    
"expr_form"
:
"list"
,
    
"token"
:token
}
api_url 
= 
"http://10.0.5.201:5000/api"
                                                                                                                                                                       
post_para 
= 
urllib.urlencode(para_dict)
api_info
=
urllib.urlopen(api_url,post_para).read()
print 
"Now Token : %s" 
% 
token
print 
api_info

最后通过uwsgi和nginx整合,提供一下uwsgi.xml

1
2
3
4
5
6
7
8
9
<
uwsgi
>
     
<
pythonpath
>/root/test</
pythonpath
>
     
<
module
>api</
module
>
     
<
callable
>app</
callable
>
     
<
socket
>/tmp/uwsgi.sock</
socket
>
     
<
master
/>
     
<
processes
>4</
processes
>
     
<
memory-report
/>
</
uwsgi
>

看下效果:

本文转自lustlost 51CTO博客,原文链接:http://blog.51cto.com/lustlost/1366981,如需转载请自行联系原作者

你可能感兴趣的文章
Swift 基本运算符
查看>>
c#.net中引入ConfigurationManager报错
查看>>
2013应届毕业生“PPS”校招应聘总结
查看>>
CentOS 7 启动VNC失败问题
查看>>
微软职位内部推荐-This Job is no longer available.
查看>>
abbyy在使用时提示更改分辨率如何处理
查看>>
vagrant教程
查看>>
什么是SMART原则?
查看>>
堆排序(java实现)
查看>>
调试K3网页版需要注意的问题
查看>>
左右手坐标系与旋转正向
查看>>
hdu 2177 取(2堆)石子游戏(威佐夫博奕)
查看>>
AndroidPn服务端部分bug解决方案
查看>>
LeetCode – Refresh – LRU
查看>>
201671030103 仇素龙 实验四软件工程结对项目
查看>>
[leetcode] Subsets II
查看>>
linux nginx搭配https
查看>>
spring boot jpa 使用update 报错解决办法
查看>>
解决微信浏览器video全屏的问题
查看>>
强化学习之Q-learning ^_^
查看>>