ansible api java_ansible-api.py

import tornado.ioloop

from tornado.options import define, options

import tornado.web

import ansible.runner

from ansible.inventory import Inventory

import simplejson

import hashlib

define("key", default='d41d8cd98f00b204e9800998ecf8427e')

def getmd5(str):

m = hashlib.md5()

m.update(str)

return m.hexdigest()

class MainHandler(tornado.web.RequestHandler):

def get(self):

self.write("Hello, world")

class CommandHandler(tornado.web.RequestHandler):

def post(self):

data = simplejson.loads(self.request.body)

badcmd = ['reboot','rm','kill','pkill','shutdown','half','mv','dd','mkfs','wget']

type = data['type']

cmd = data['cmd']

host = data['host']

sign = data['sign']

cmdinfo = cmd.split(" ",1)

print type,host,options.key

hotkey = type+host+options.key

print hotkey

result = getmd5(hotkey)

print result

if sign != result:

self.write("Sign is Error")

else:

if cmdinfo[0] in badcmd:

self.write("This is Danger Shell")

else:

runner = ansible.runner.Runner(

module_name=type,

module_args=cmd,

pattern=host,

forks=10

)

datastructure = runner.run()

self.write(datastructure)

class GetGroupHandler(tornado.web.RequestHandler):

def get(self):

i = Inventory()

groups = i.list_groups()

self.write('\n'.join(groups))

application = tornado.web.Application([

(r"/", MainHandler),

(r"/command", CommandHandler),

(r"/getgroup", GetGroupHandler),

])

if __name__ == "__main__":

application.listen(8888)

tornado.ioloop.IOLoop.instance().start()

一键复制

编辑

Web IDE

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值