利用微信的公众平台监控管理linux服务器[python实例]

2019-03-01 23:55|来源: 网路


利用 微信公众平台 查看管理linux服务器

前沿:

最近懒得做运维自动化了,看到市场部门的同事在调用公众平台的接口,感觉很有意思~就想试试用这个管理简单的管理linux主机,并推送告警信息。


打算这段时间主要再扩展下这个应用~

 
  1. 1 增加一些危险字符的判断,可以自己指定一个转义字符

  2. 2 针对post的数据进行加密下 比如  555ifconfig  这个555就是密码,在后端会有判断的,没有555的一切命令都不会执行

  3. 3 微信平台也可以恢复一些图文的,我可以把流量图,或者是各种rrd库里面的图,发给客户端


申请微信公众平台

参考 http://mp.weixin.qq.com/cgi-bin/readtemplate?t=wxm-callbackapi-doc&lang=zh_CN


微信公众平台官方站点申请账号 http://mp.weixin.qq.com/
登陆公众平台,点击 设置 -->自定义回复 -->调用公众平台
在 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()




下面是php的代码,同事正在用~ 说明代码是没有问题的,具体的请自行修改下~

微信公众平台提供PHP代码,可以验证,但是收到用户消息是不能直接回复的,需要在头部添加一段代码$wechatObj->responseMsg();

也可以直接复制下面的代码,粘贴即用,如果您的网站还没被验证,参考本博其它相关文章

$contentStr = "Welcome to wechat world!";换成你想回复的内容就可以了,

$keyword代表用户发送给你的消息,你可以根据相应的信息返回值

当你启用自定义回复接口后原来的新用户进入后的提示信息就没有了,但是微信提供了当新用户加入时自动发给你一个字符串,字符串是
Hello2BizUser,你可以根据这个返回给新关注的用户一些提示信息

 
  1. <?php

  2. /**

  3. * wechat php test

  4. */

  5. //define your token

  6. define("TOKEN", "weixin");

  7. $wechatObj = new wechatCallbackapiTest();

  8. $wechatObj->valid();

  9. $wechatObj->responseMsg();

  10. class wechatCallbackapiTest

  11. {

  12. public function valid()

  13. {

  14.  $echoStr = $_GET["echostr"];

  15.  //valid signature , option

  16.  if($this->checkSignature()){

  17.   echo $echoStr;

  18.   exit;

  19.  }

  20. }

  21. public function responseMsg()

  22. {

  23. //get post data, May be due to the different environments

  24. $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

  25.  //extract post data

  26. if (!empty($postStr)){

  27.    $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);

  28.    $fromUsername = $postObj->FromUserName;

  29.    $toUsername = $postObj->ToUserName;

  30.    $keyword = trim($postObj->Content);

  31.    $timetime = time();

  32.    $textTpl = "<xml>

  33. <ToUserName><![CDATA[%s]]></ToUserName>

  34. <FromUserName><![CDATA[%s]]></FromUserName>

  35. <CreateTime>%s</CreateTime>

  36. <MsgType><![CDATA[%s]]></MsgType>

  37. <Content><![CDATA[%s]]></Content>

  38. <FuncFlag>0</FuncFlag>

  39. </xml>";    

  40. if(!empty( $keyword ))

  41.    {

  42.    $msgType = "text";

  43.     $contentStr = "Welcome to wechat world!";

  44.     $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

  45.     echo $resultStr;

  46.    }else{

  47.     echo "Input something...";

  48.    }

  49.  }else {

  50.   echo "";

  51.   exit;

  52.  }

  53. }

  54. private function checkSignature()

  55. {

  56.  $signature = $_GET["signature"];

  57.  $timestamp = $_GET["timestamp"];

  58.  $nonce = $_GET["nonce"];

  59. $token = TOKEN;

  60. $tmpArr = array($token, $timestamp, $nonce);

  61. sort($tmpArr);

  62. $tmpStr = implode( $tmpArr );

  63. $tmpStr = sha1( $tmpStr );

  64. if( $tmpStr == $signature ){

  65. return true;

  66. }else{

  67. return false;

  68. }

  69. }

  70. }

  71. ?>


本文出自 “峰云,就她了。” 博客,请务必保留此出处http://rfyiamcool.blog.51cto.com/1030776/1142815


转自:http://rfyiamcool.blog.51cto.com/1030776/1142815

相关问答

更多
  • 解决web乱码问题工具类cookie工具类session工具类Servlet文件上传工具类SpringMVC文件上传工具类数据库操作工具类windows进程工具类Time工具类常用正则表达式工具类
  • 可以了解下快云服务器,性价比较高,可试用。
  • 能使用的!微信 在安卓手机里可以使用,安装是用java 开发的,所以 可以用java开发
  • 微信公众平台开发注意事项: 一、微信公众平台开发是指为微信公众号进行业务开发,为移动应用、PC端网站、公众号第三方平台(为各行各业公众号运营者提供服务)的开发,请前往微信开放平台接入。 二、在申请到认证公众号之前,你可以先通过测试号申请系统,快速申请一个接口测试号,立即开始接口测试开发。 三、在开发过程中,可以使用接口调试工具来在线调试某些接口。 四、每个接口都有每日接口调用频次限制,可以在公众平台官网-开发者中心处查看具体频次。 五、在开发出现问题时,可以通过接口调用的返回码,以及报警排查指引(在公众平台 ...
  • 不知道 你说的什么。你服务器的账号密码 和你公众平台的登陆账号密码压根也没关系啊。和FTP也没关系啊 如果FTP 授权给root或者admin 那你则用root 或者admin的账号密码登陆就可以 你问的问题 压根没逻辑。。完全看不懂你说的。“ 端口是多少 ”是什么??哪个端口? FTP 的端口??FTP 端口是21
  • 大多数情况下,可以依托第三方开通一个账号用不到空间。 自己做平台才需要空间。 一般占用的都是图片居多。
  • 你好.不知道现在的访问数据只是你的预算.还是说已经达到这么大的访问量.同时十到二十万的在线访问量.不是一台服务器能够支撑的了.需要你有多台服务器做集群.如果这个访问量现在只是你的预算.那么就没必要太担心. 网站从新上线到这么大规模是需要时间的.至少网站前期没有这么大的访问量.用一台双至强配置.8G内存的服务器即可.线路选择方面.结合网站的访问来源确定.若是网站面向南方用户的话用电信.面向北方用户用网通.面向全国用户的话用双线机房.根据你所选择机房线路的不同.租用这样一台服务器一般是五六千到近万元每年. 希望 ...
  • 一般是不需要的 1.请问你安装的哪个微信企业号第三方,不同的第三方解决方法是不一样的 建议你跟客服沟通下 建议你多试几个微信第三方应用(畅移微信企业号、点点客、微盟等等),对比下然后选择一款最简单方便的微信企业号。
  • 刚开始还是生|意上的一位朋|友给推|荐的,对小|猪|CMS的程|序都很满意,功|能的确很强大,而且相关设|计也充分考虑了用户的实际需|求。
  • 刚刚看错了 这个在原理上是可以实现的 但是电话号码除外 这个需要关注的人自己提供给公众号才行