利用 微信公众平台 查看管理linux服务器
最近懒得做运维自动化了,看到市场部门的同事在调用公众平台的接口,感觉很有意思~就想试试用这个管理简单的管理linux主机,并推送告警信息。
打算这段时间主要再扩展下这个应用~
1 增加一些危险字符的判断,可以自己指定一个转义字符
2 针对post的数据进行加密下 比如 555ifconfig 这个555就是密码,在后端会有判断的,没有555的一切命令都不会执行
3 微信平台也可以恢复一些图文的,我可以把流量图,或者是各种rrd库里面的图,发给客户端
申请微信公众平台
参考 ?t=wxm-callbackapi-doc&lang=zh_CN
微信公众平台官方站点申请账号
登陆公众平台,点击 设置 -->自定义回复 -->调用公众平台
在 URL 中填写你的URL地址,请根据个人情况填写 Token 并记住,这个 Token 是你随意去的字符串.以防止别人盗用.
点击提交,提示 提交成功 字样.
我要怎么实现~
我发个信息过去,微信是把消息post到的你服务器,然后我获取你要查的东西后,我调用下linux的命令,或者是已经写过的函数,得出结果,最后返回给客户。
必须是80端口的,微信的接口很二的~
python app.py 80
# -*- coding:utf-8 -*-
from bottle import debug, default_app, run, get, request, post
import sys, os, time, libxml2dom
@get('/')
def index():
return request.GET.get('echostr')
@post('/')
def index_post():
for key, value in request.POST.allitems():
doc = libxml2dom.parseString(key)
_to = doc.xpath('//FromUserName')[0].textContent
_from = doc.xpath('//ToUserName')[0].textContent
cmd = doc.xpath('//Content')[0].textContent
aa=os.popen(cmd).read()
return """<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[%s]]></Content>
<FuncFlag>0</FuncFlag>
</xml>"""%(_to, _from, int(time.time()), aa)
if __name__ == "__main__":
# Interactive mode
debug(True)
port = int(sys.argv[1] if len(sys.argv) > 1 else 8888)
run(host='0.0.0.0', portport=port, reloader=True)
else:
# Mod WSGI launch
os.chdir(os.path.dirname(__file__))
app = default_app()