Chinaunix首页 | 论坛 | 博客
  • 博客访问: 373476
  • 博文数量: 80
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1767
  • 用 户 组: 普通用户
  • 注册时间: 2013-01-24 16:18
个人简介

为啥不能追求自己的爱好一辈子呢

文章分类

全部博文(80)

文章存档

2017年(1)

2015年(2)

2014年(18)

2013年(59)

分类: LINUX

2014-03-25 16:33:28

  我们一直都是用监控宝,来监控我们的外网ip,但是外网变化很大,很多机器,经常变化ip,所以手工配置很复杂,
就开始使用监控宝的api,来让它自动化,


1 . 监控宝的api,首先需要根据用户名密码,和客户端用户名密码来获取一个token,来进行下面的访问。用curl或者
libcurl很容易获取token。需要用post的方式获取。--data表示post请求。
下面是控制台请求:

点击(此处)折叠或打开

  1. curl -s https://api.jiankongbao.com/v2/oauth/token.json --data "grant_type=password&username=username&password=MD5(password)&client_id=cliendid&client_secret=client pwd"
例如结果
 

点击(此处)折叠或打开

  1. {"access_token":"ae6fad5bc0a1bc5dd0cc5095174b28429b76bc2f","expires_in":3600,"token_type":"bearer","scope":null,"refresh_token":"2251e85bbc1e608328867492298004d194bc4a53"}
(如果用c++的话,可以用jsoncpp获得access token)

2. 创建任务。我们可以调用
其中access_token是上面获得的token

点击(此处)折叠或打开

  1. curl -s https://api.jiankongbao.com/v2/site/create.json?access_token=token -d'data=[{"task_name":"byjjt","hos t":"8.8.8.8","task_type":"ping","frequency":"15","retry":"1","isAgent":"0","scope":"1","class_id":"","monitor":{"1":"\u897f\u5b89\u7535\u4fe1"}}]'
data=的方式是典型的http post的方式。后面的是json数据。

3.删除任务我们可以用:
-X 表示提交的方式,这里是http的put提交。

点击(此处)折叠或打开

  1. curl -X PUT https://api.jiankongbao.com/v2/site/delete/684063.json?access_token=token

面列出了代码实现创建监控宝ping项目的代码

点击(此处)折叠或打开

  1. #include<jsoncpp/json/json.h>
  2. #include<iostream>
  3. #include <curl/curl.h>
  4. #include<sstream>
  5. #include<stdlib.h>
  6. #include<string.h>
  7. using namespace std;
  8. static size_t write_cb(char *ptr, size_t size, size_t nmemb, char *out)
  9. {
  10.     size_t r;
  11.     r = size * nmemb;
  12.     strncat(out,ptr,r);
  13.     return(r);
  14. }

  15. int main()
  16. {
  17.     char buf[2048];
  18.     memset(buf,0,sizeof(buf));
  19.     CURL *curl;
  20.     CURLcode res;
  21.     string url = "";
  22.     url += "?access_token=";
  23.     url += "token";
  24.     curl = curl_easy_init();
  25.     if(!curl)
  26.     {
  27.         return 0;
  28.     }
  29.   stringstream ss; 
  30.   ss << "data =";
  31.     Json::Value value;
  32.     value["task_name"] = Json::Value("site_api");
  33.     value["host"] = Json::Value("");
  34.     value["frequency"] = Json::Value("15");
  35.     value["retry"] = Json::Value("3");
  36.     value["task_type"] = Json::Value("ping");
  37.     value["monitors"] = Json::Value("1");
  38.     Json::Value root;
  39.     root.append(value);
  40.     Json::FastWriter fast;
  41.      ss << fast.write(root);
  42.     cout << ss.str()<< endl;

  43.     curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
  44.     curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_cb);
  45.     curl_easy_setopt(curl, CURLOPT_COPYPOSTFIELDS, ss.str().c_str());
  46.     curl_easy_setopt(curl, CURLOPT_WRITEDATA, buf);

  47.     res = curl_easy_perform(curl);
  48.     cout << buf<<endl;
  49.     return 0;
  50. }


阅读(1350) | 评论(0) | 转发(0) |
1

上一篇:shell 重定向的妙用

下一篇:dnsmasq

给主人留下些什么吧!~~