cURL

cURL是 URL命令行工具, 即 command URL, 可以通过命令行模拟各种应用协议的发包, 包括FTP HTTP HTTPS,

官方网站 http://curl.haxx.se/

luacurl

lua curl是基于curl的库libcurl(http://curl.haxx.se/libcurl/),

针对libcurl开放的API(http://curl.haxx.se/libcurl/c/), 定义lua API对curl基本功能进行封装。

luauser中列出来3中绑定libcurl的lua封装库(http://lua-users.org/wiki/LuaCurl),

其中freepops-luacurl(http://www.freepops.org/en/)实现了libcurl所有的easy 接口 (http://curl.haxx.se/libcurl/c/libcurl-easy.html)

luaforge上提供一个 windows 上可运行luacurl的压缩包(http://files.luaforge.net/releases/luacurl/freepops-luacurl/0.3.0):

freepops-lua-curl-binary-win32-openssl

本文示例就采用这个windows可运行包。

解压后, cmd命令行cd到解压目录,使用 luaxx.exe yy.lua 接口运行示例脚本。

示例

例子,实现https方式,登录网站,访问某个网页,修改其中参数的功能。其中xx应用时候需要修改。

require("curl")

local ipList =
{
"192.168.1.1",
  "192.168.1.1",
}

--登陆
function loginWeb(ip)
  c = curl.easy_init()
  c:setopt(curl.OPT_SSL_VERIFYHOST, );
  c:setopt(curl.OPT_SSL_VERIFYPEER, );
  c:setopt(curl.OPT_URL, "https://"..ip.."/")
c:setopt(curl.OPT_POSTFIELDS, "Username=admin&Password=admin&Frm_Logintoken=&action=login")
  c:setopt(curl.OPT_WRITEFUNCTION, function(buffer)
    --print(buffer)
    --print("\r\n---------------------------\r\n");
    return #buffer
  end)
   c:perform()
end --访问页面
function accessPage(ip)
  c = curl.easy_init()
  c:setopt(curl.OPT_SSL_VERIFYHOST, );
  c:setopt(curl.OPT_SSL_VERIFYPEER, );
  c:setopt(curl.OPT_URL, "https://"..ip.."/xxpage.html")
  c:setopt(curl.OPT_WRITEFUNCTION, function(buffer)
    --print(buffer)
    --print("\r\n---------------------------\r\n");
    return #buffer
  end)
   c:perform()
end --设置参数
function setParameter(ip, file)
  c = curl.easy_init()
  c:setopt(curl.OPT_SSL_VERIFYHOST, );
  c:setopt(curl.OPT_SSL_VERIFYPEER, );
  c:setopt(curl.OPT_URL, "https://"..ip.."/xx.php")
  c:setopt(curl.OPT_POSTFIELDS, "DaylightSavingsUsed=1&Dscp=-1")   local htmlTable = {}
  c:setopt(curl.OPT_WRITEFUNCTION, function(buffer)
    --print(buffer)
    --print("\r\n---------------------------\r\n");
    table.insert(htmlTable, buffer)
    return #buffer
  end)
   c:perform()

  local htmlStr = table.concat(htmlTable);
  local resultBuff = "";
  if string.match(htmlStr, "<result>SUCC</result>") ~= nil then
    resultBuff = ip.." config OK\r\n";
    print(resultBuff)
    file:write(resultBuff);
  else
    resultBuff = ip.." config NOK\r\n";
    print(resultBuff)
   file:write(resultBuff);

 end
end

local file = io.open(".\\result.txt", "w+");
for key,ip in ipairs(ipList) do
  loginWeb(ip);
  accessPage(ip);
  openLightSave(ip, file);
end
file:close();
print("Done")

lua cURL使用笔记的更多相关文章

  1. lua curl动态链接库编译安装

    关于lua curl的资料网上并不是很多.找来找去就那么几个,所以我绝得很有必要把我的经验记下来,以防下次忘记                                              ...

  2. lua本学习笔记功能

    Lua本学习笔记功能 1.  函数返回 指定任务的主要功能是完成,在这种情况下,函数被用作调用语句.函数可以计算并返回值,在这种情况下,作为分配值表达式语句使用. 语法: funcationfunc_ ...

  3. GJM : Lua 语言学习笔记

    Lua笔记 容易与C/C++整合 Lua所提供的机制是C所不善于的:高级语言,动态结构,简洁,易于测试和调试. Lua特有的特征: `1:可扩展性.卓越的扩展性导致了很多人将Lua用作搭建领域语言的工 ...

  4. lua curl动态链接库编译安装(二)

    下面再介绍一下lua-curl中的lua-curl-0.2.tar.gz版本的安装方法,可能对于一般的人来说这个很简单,但是对于我们这些菜鸟来说就不一样了: # wget http://files.l ...

  5. Lua 性能相关笔记

    1.创建一个闭合函数要比创建一个table更廉价,访问非局部的变量也比table字段更快. 2.访问局部变量要比全局变量更快,尽可能的使用局部变量,可以避免无用的名称引入全局环境. 3.do-end语 ...

  6. LUA table学习笔记

    function printT( ... ) for i,v in ipairs(...) do print(i,v) end end t1={} t2={} t3={} table.insert(t ...

  7. 《The Evolution of Lua》读书笔记 1

    lua的优点: 可移植性 容易嵌入 体积小 高效率 这些优点都来自于lua的设计目标:简洁.从Scheme获得了很多灵感,包括匿名函数,合理的语义域概念   lua前身: 巴西被禁运,引入计算机软件和 ...

  8. Lua JSONRPC学习笔记

    JSON RPC JSON RPC 为利用json数据格式来执行远程调用方式, 作用同xmlrpc,不过与xmlrpc相比, jsonrpc更加轻量,json更加节省数据量,更加可读性高. 官网网站: ...

  9. lua学习项目笔记

    这几天草草的浏览了一下电子版的<lua程序设计>,没有懂的地方就自动忽略了,挑拣了一些可以理解的部分一直在推进.推进至后面的时候已经浑浑噩噩的了,有种想看完这本书的强迫症的感觉.推进CAP ...

随机推荐

  1. 安装wamp,访问主页提示PHP configuration loaded file……

    安装wamp,访问主页提示PHP configuration loaded file…… *** ERROR *** The PHP configuration loaded file is: - s ...

  2. snprintf/strncpy/strlcpy速度测试

    速度测试代码: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <un ...

  3. sql语句什么时候用双引号或者单引号

    INSERT INTO table_name ( field1, field2,...fieldN ) VALUES ( value1, value2,...valueN ); 如果数据是字符型,必须 ...

  4. django 模板中定义临时列表

    <ul class="num_t clr"> {% for obj in ""|ljust:"10" %} <li> ...

  5. 什么是blob,mysql blob大小配置介绍

    什么是blob,mysql blob大小配置介绍 作者: 字体:[增加 减小] 类型:转载   BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器.在计 ...

  6. 网站压力测试工具webbench

    webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.编译安装: 引用 wget htt ...

  7. ArcGIS Server发布服务,打包成功,发布失败

    打包成功,发布失败 部分解决方案: ①   查看Server对于源数据所在文件夹是否有读写权限,若无赋予Server账户至少读写权限.读写权限的赋予:对应存放数据的文件夹上右键→属性→ 安全 赋予ar ...

  8. Delphi 的绘图功能[1] - PolyBezier、PolyBezierTo

    双击代码全选 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 unit Unit1; interface uses Windows, Messages, SysUtils ...

  9. C++ 中static 使用大全

    /// 静态全局变量 :只能在当前cpp中访问到  static int s_global = 0; void funcA() {      /// 静态局部变量 (函数静态变量) 初始化过一次就不会 ...

  10. OAuth的机制原理讲解及开发流程

    本想前段时间就把自己通过QQ OAuth1.0.OAuth2.0协议进行验证而实现QQ登录的心得及Demo实例分享给大家,可一直很忙,今天抽点时间说下OAuth1.0协议原理,及讲解下QQ对于Oaut ...