libcurl 如何开启ipv6查看curl是否支持ipv6

curl的基本使用及libcurl
我的图书馆
curl的基本使用及libcurl
1 curl 是一个强大的命令行工具,一般被称为下载工具;其实curl可以执行HTTP HTTPS FTP等协议的绝大部分请求,完成一般windows等系统上下载工具的绝大多数功能。
网址:&& &[没错,来自瑞典]
curl is a command line tool for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, kerberos...), file transfer resume, proxy tunneling and a busload of other useful tricks.
Curl is free and open software that compiles and runs under a wide variety of operating systems. Curl exists thanks to efforts from many contributors.The most recent stable version of curl is version 7.22.0, released on 13th of September 2011. Currently, 110 of the listed archives are of the latest version.
2 CURL的基本使用
1、获得一张页面使用命令:curl http://curl.haxx.se这是最简单的使用方法。用这个命令获得了http://curl.haxx.se指向的页面,同样,如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地。如果下载的是HTML文档,那么缺省的将不显示文件头部,即HTML文档的header。要全部显示,请加参数 -i,要只显示头部,用参数 -I。任何时候,可以使用 -v 命令看curl是怎样工作的,它向服务器发送的所有命令都会显示出来。为了断点续传,可以使用-r参数来指定传输范围。2、表单(Form)的获取在WEB页面设计中,form是很重要的元素。Form通常用来收集并向网站提交信息。提交信息的方法有两种,GET方法和POST方法。先讨论GET方法,例如在页面中有这样一段:&form method="GET" action="junk.cgi"&&input type=text name="birthyear"&&input type=submit name=press value="OK"&&/form&那么浏览器上会出现一个文本框和一个标为“OK”的按钮。按下这个按钮,表单就用GET方法向服务器提交文本框的数据。例如原始页面是在/when/birth.html看到的,然后您在文本框中输入1905,然后按OK按钮,那么浏览器的URL现在应该是:“/when/junk.cgi?birthyear=1905&press=OK”对于这种网页,curl可以直接处理,例如想获取上面的网页,只要输入:curl "/when/junk.cgi?birthyear=1905&press=OK"就可以了。表单用来提交信息的第二种方法叫做POST方法,POST方法和GET方法的区别在于GET方法使用的时候,浏览器中会产生目标URL,而POST不会。类似GET,这里有一个网页:&form method="POST" action="junk.cgi"&&input type=text name="birthyear"&&input type=submit name=press value="OK"&&/form&浏览器上也会出现一个文本框和一个标为“OK”的按钮。按下这个按钮,表单用POST方法向服务器提交数据。这时的URL是看不到的,因此需要使用特殊的方法来抓取这个页面:curl -d "birthyear=1905&press=OK" /when/junk.cgi这个命令就可以做到。1995年年末,RFC 1867定义了一种新的POST方法,用来上传文件。主要用于把本地文件上传到服务器。此时页面是这样写的:&form method="POST" enctype='multipart/form-data' action="upload.cgi"&&input type=file name=upload&&input type=submit name=press value="OK"&&/form&对于这种页面,curl的用法不同:curl -F upload=@localfilename -F press=OK [URL]这个命令的实质是将本地的文件用POST上传到服务器。有关POST还有不少用法,用户可以自己摸索。3、使用PUT方法。HTTP协议文件上传的标准方法是使用PUT,此时curl命令使用-T参数:curl -T uploadfile /receive.cgi4、有关认证。curl可以处理各种情况的认证页面,例如下载用户名/密码认证方式的页面(在IE中通常是出现一个输入用户名和密码的输入框):curl -u name:password 如果网络是通过http代理服务器出去的,而代理服务器需要用户名和密码,那么输入:curl -U proxyuser:proxypassword http://curl.haxx.se任何需要输入用户名和密码的时候,只在参数中指定用户名而空着密码,curl可以交互式的让用户输入密码。5、引用。有些网络资源访问的时候必须经过另外一个网络地址跳转过去,这用术语来说是:referer,引用。对于这种地址的资源,curl也可以下载:curl -e http://curl.haxx.se daniel.haxx.se6、指定用户客户端。有些网络资源首先需要判断用户使用的是什么浏览器,符合标准了才能够下载或者浏览。此时curl可以把自己“伪装”成任何其他浏览器:curl -A "Mozilla/4.0 ( MSIE 5.01; Windows NT 5.0)" [URL]这个指令表示curl伪装成了IE5.0,用户平台是Windows 2000。(对方服务器是根据这个字串来判断客户端的类型的,所以即使使用AIX也无所谓)。使用:curl -A "Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)" [URL]此时curl变成了Netscape,运行在PIII平台的Linux上了。7、COOKIESCookie是服务器经常使用的一种记忆客户信息的方法。如果cookie被记录在了文件中,那么使用命令:curl -b stored_cookies_in_file curl可以根据旧的cookie写出新cookie并发送到网站:curl -b cookies.txt -c newcookies.txt 8、加密的HTTP——HTTPS。如果是通过OpenSSL加密的https协议传输的网页,curl可以直接访问:curl https://that.9、http认证。如果是采用证书认证的http地址,证书在本地,那么curl这样使用:curl -E mycert.pem https://that.参考读物和注意事项:curl非常博大,用户要想使用好这个工具,除了详细学习参数之外,还需要深刻理解http的各种协议与URL的各个语法。这里推荐几个读物:RFC 2616 HTTP协议语法的定义。RFC 2396 URL语法的定义。RFC 2109 Cookie是怎样工作的。RFC 1867 HTTP如何POST,以及POST的格式。
注 平常使用最多的且容易碰到问题的功能与选项如下:
1 cookie的保存与重用;
2 POST请求的提交;
3 文件的上传;
4 HTTPS的支持,或Basic认证;
5 referer的设置;
6 URL重定向 -L 参数;
7 下载文件时指定 range 以支持断点续传,或多worker下载。
3 &libcurl&
curl背后所使用的库就叫 libcurl,所以你也可以在你自己的程序或项目中使用libcurl以获得类似CURL的强大功能。
libcurl 写道
libcurl is a free and easy-to-use client-side URL transfer library, supporting DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, TELNET and TFTP. libcurl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, Kerberos), file transfer resume, http proxy tunneling and more!libcurl is highly portable, it builds and works identically on numerous platforms, including Solaris, NetBSD, FreeBSD, OpenBSD, Darwin, HPUX, IRIX, AIX, Tru64, Linux, UnixWare, HURD, Windows, Amiga, OS/2, BeOs, Mac OS X, Ultrix, QNX, OpenVMS, RISC OS, Novell NetWare, DOS and more...libcurl is free, thread-safe, IPv6 compatible, feature rich, well supported, fast, thoroughly documented and is already used by many known, big and successful companies and numerous applications.
如果你使用 libcurl 从HTTP服务器上下载文件的时候,一切正常,返回200,但就是没有数据,那么请检查你的HTTP文件服务器返回的HEADER里是否明确指定了 Content-Length字段; 如果该字段未明确指定或者为0,那么即使再大的文件也不会下载成功。
这应该不是libcurl的Bug,而是为了支持标准的HTTP协议头信息,忽略容错能力。
TA的最新馆藏[转]&[转]&
喜欢该文的人也喜欢用户名:zuozuo119
访问量:3750
注册日期:
阅读量:1297
阅读量:3317
阅读量:440762
阅读量:1127190
51CTO推荐博文
转载:123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051##基本用法(配合sed/awk/grep)&$curl&http:&##下载保存&$curl&http:$curl&-o&index.html&http:$curl&-O&http:##通过代理&$curl&-x&123.45.67.89:1080-o&page.html&http:##保存cookie&$curl&-x&123.45.67.89:1080-o&page1.html&-D&cookie0001.txt&http:##使用cookie&$curl&-x&123.45.67.89:1080-o&page1.html&-D&cookie0002.txt&-b&cookie0001.txt&http:##模仿浏览器&$curl&-A&&Mozilla/4.0&(&MSIE&6.0;&Windows&NT&5.0)&-x&123.45.67.89:1080-o&page.html&-D&cookie0001.txt&http:##伪造referer&$curl&-A&&Mozilla/4.0&(&MSIE&6.0;&Windows&NT&5.0)&-x&123.45.67.89:1080-e&&&-o&page.html&-D&cookie0001.txt&http:##循环下载&$curl&-O&http:##循环(匹配)下载&$curl&-O&http:##循环(引用)下载&$curl&-o&#2_#1.jpg&http:##断点续传&$curl&-c&-O&http:##分块下载&$curl&-r&&0-&10240-o&&&zhao.part1&http:$curl&-r&10241-&20480-o&&&zhao.part1&http:$curl&-r&20481-&40960-o&&&zhao.part1&http:$curl&-r&40961-&-o&&&zhao.part1&http:...&$cat&zhao.part*&&&zhao.mp3&##GET&上传&$curl&http:##POST&上传&$curl&-d&&user=nickwolfe&password=12345&http:##POST&文件上传&$curl&-F&upload=&$localfile&&-F&$btn_name=$btn_value&http:&&一、参数详解&-M/--manual&显示全手动&-n/--netrc&从netrc文件中读取用户名和密码&--netrc-optional&使用&.netrc&或者&URL来覆盖-n&--ntlm&使用&HTTP&NTLM&身份验证&-N/--no-buffer&禁用缓冲输出&-o/--output&把输出写到该文件中&-O/--remote-name&把输出写到该文件中,保留远程文件的文件名&-p/--proxytunnel&使用HTTP代理&--proxy-anyauth&选择任一代理身份验证方法&--proxy-basic&在代理上使用基本身份验证&--proxy-digest&在代理上使用数字身份验证&--proxy-ntlm&在代理上使用ntlm身份验证&-P/--ftp-port&&address&&使用端口地址,而不是使用PASV&-Q/--quote&&cmd&&文件传输前,发送命令到服务器&-r/--range&&range&&检索来自HTTP/1.1或FTP服务器字节范围&--range-file&&&读取(SSL)的随机文件&-R/--remote-time&在本地生成文件时,保留远程文件时间&--retry&&num&&传输出现问题时,重试的次数&--retry-delay&&seconds&&传输出现问题时,设置重试间隔时间&--retry-max-time&&seconds&&传输出现问题时,设置最大重试时间&-s/--silent&静音模式。不输出任何东西&-S/--show-error&显示错误&--socks4&&host[:port]&&用socks4代理给定主机和端口&--socks5&&host[:port]&&用socks5代理给定主机和端口&-t/--telnet-option&&OPT=val&&Telnet选项设置&--trace&&file&&对指定文件进行debug&--trace-ascii&&file&&Like&跟踪但没有hex输出&--trace-time&跟踪/详细输出时,添加时间戳&-T/--upload-file&&file&&上传文件&--url&&URL&&Spet&URL&to&work&with&-u/--user&&user[:password]&&设置服务器的用户和密码&-U/--proxy-user&&user[:password]&&设置代理用户名和密码&-V/--version&显示版本信息&-w/--write-out&[format]&什么输出完成后&-x/--proxy&&host[:port]&&在给定的端口上使用HTTP代理&-X/--request&&command&&指定什么命令&-y/--speed-time&放弃限速所要的时间。默认为30&-Y/--speed-limit&停止传输速度的限制,速度时间'秒&-z/--time-cond&传送时间设置&-0/--http1.0&使用HTTP&1.0&-1/--tlsv1&使用TLSv1(SSL)&-2/--sslv2&使用SSLv2的(SSL)&-3/--sslv3&使用的SSLv3(SSL)&--3p-quote&&like&-Q&for&the&source&URL&for&3rd&party&transfer&--3p-url&使用url,进行第三方传送&--3p-user&使用用户名和密码,进行第三方传送&-4/--ipv4&使用IP4&-6/--ipv6&使用IP6&-#/--progress-bar&用进度条显示当前的传送状态二,常用curl实例1,抓取页面内容到一个文件中[root@10.10.90.97&~]#&curl&-o&home.html&&2,用-O(大写的),后面的url要具体到某个文件,不然抓不下来。我们还可以用正则来抓取东西[root@10.10.90.97&~]#&curl&-O&3,模拟表单信息,模拟登录,保存cookie信息[root@10.10.90.97&~]#&curl&-c&./cookie_c.txt&-F&log=aaaa&-F&pwd=******&4,模拟表单信息,模拟登录,保存头信息[root@10.10.90.97&~]#&curl&-D&./cookie_D.txt&-F&log=aaaa&-F&pwd=******&-c(小写)产生的cookie和-D里面的cookie是不一样的。5,使用cookie文件[root@10.10.90.97&~]#&curl&-b&./cookie_c.txt&&6,断点续传,-C(大写的)[root@10.10.90.97&~]#&curl&-C&-O&7,传送数据,最好用登录页面测试,因为你传值过去后,curl回抓数据,你可以看到你传值有没有成功[root@10.10.90.97&~]#&curl&-d&log=aaaa&&8,显示抓取错误[root@10.10.90.97&~]#&curl&-f&curl:&(22)&The&requested&URL&returned&error:&404[root@10.10.90.97&~]#&curl&&HTML&&HEAD&&TITLE&404,not&found&/TITLE&。。。。。。。。。。。。9,伪造来源地址,有的网站会判断,请求来源地址[root@10.10.90.97&~]#&curl&-e&10,当我们经常用curl去搞人家东西的时候,人家会把你的IP给屏蔽掉的,这个时候,我们可以用代理[root@10.10.90.97&~]#&curl&-x&10.10.90.83:80&-o&home.html&11,比较大的东西,我们可以分段下载[root@10.10.90.97&~]#&curl&-r&0-100&-o&img.part1&&&%&Total&&&&%&Received&%&Xferd&&Average&Speed&&&Time&&&&Time&&&&&Time&&Current&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Dload&&Upload&&&Total&&&Spent&&&&Left&&Speed100&&&101&&100&&&101&&&&0&&&&&0&&&1926&&&&&&0&--:--:--&--:--:--&--:--:--&&&&&0[root@10.10.90.97&~]#&curl&-r&100-200&-o&img.part2&&&%&Total&&&&%&Received&%&Xferd&&Average&Speed&&&Time&&&&Time&&&&&Time&&Current&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Dload&&Upload&&&Total&&&Spent&&&&Left&&Speed100&&&101&&100&&&101&&&&0&&&&&0&&&3498&&&&&&0&--:--:--&--:--:--&--:--:--&&&98k[root@10.10.90.97&~]#&curl&-r&200-&-o&img.part3&&&%&Total&&&&%&Received&%&Xferd&&Average&Speed&&&Time&&&&Time&&&&&Time&&Current&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Dload&&Upload&&&Total&&&Spent&&&&Left&&Speed100&1515&&&&0&&&&&0&&&154k&&&&&&0&--:--:--&--:--:--&--:--:--&&280k[root@10.10.90.97&~]#&ll&|grep&img.part-rw-r--r--&1&root&root&&&101&Jan&24&10:59&img.part1-rw-r--r--&1&root&root&&&101&Jan&24&11:00&img.part2-rw-r--r--&1&root&root&13515&Jan&24&11:00&img.part3用的时候,把他们cat一下就OK了,cat&img.part*&&img.jpg12,不显示下载进度信息[root@10.10.90.97&~]#&curl&-s&-o&aaa.jpg&&13,显示下载进度条[root@10.10.90.97&~]#&curl&-#&-O&&########################################################################&100.0%14,通过ftp下载文件[root@10.10.90.97&~]#&curl&-u&用户名:密码&-O&%&Total&&&&%&Received&%&Xferd&&Average&Speed&&&Time&&&&Time&&&&&Time&&CurrentDload&&Upload&&&Total&&&Spent&&&&Left&&Speed101&&&&1934&&&&0&&&&&0&&&3184&&&&&&0&--:--:--&--:--:--&--:--:--&&7136或者用下面的方式[root@10.10.90.97&~]#&curl&-O&&&%&Total&&&&%&Received&%&Xferd&&Average&Speed&&&Time&&&&Time&&&&&Time&&Current&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Dload&&Upload&&&Total&&&Spent&&&&Left&&Speed100&8518&&&&0&&&&&0&&2312k&&&&&&0&--:--:--&--:--:--&--:--:--&11.5M15,通过ftp上传[root@10.10.90.97&~]#&curl&-T&xukai.php&&&%&Total&&&&%&Received&%&Xferd&&Average&Speed&&&Time&&&&Time&&&&&Time&&Current&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Dload&&Upload&&&Total&&&Spent&&&&Left&&Speed100&87518&&&&0&&&&&0&&100&87518&&&&&&0&&2040k&--:--:--&--:--:--&--:--:--&8901k使用事例:&#!/bin/bash&&2&while&read&LINE&&3&do&&4&&&curl=&$LINE&&&5&&&echo&-n&&&$LINE&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&6&&&/usr/bin/curl&-s&-o&/dev/null&-w&%{http_code}&\\n&&$curl&&7&&&if&[&&$http_code&&==&&200&&];then&&8&&&&&&&echo&&&$LINE&&&请求失败&&&9&&&fi&10&done&&&a.loga.log的内容如下:&&1&http://10.10.10.30:51002/clearUserCache4Redis?userId=121&&2&http://10.10.10.30:51002/clearUserCache4Redis?userId=123123&&3&http://10.10.10.30:51002/clearUserCache4Redis?userId=&&4&http://10.10.10.30:51002/clearUserCache4Redis?userId=&&5&http://10.10.10.30:51002/clearUserCache4Redis?userId=123123&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
了这篇文章
类别:┆阅读(0)┆评论(0)后使用快捷导航没有帐号?
暂时关闭广告
查看: 7471|回复: 0
php curl获取网页内容(IPV6下超时)的解决办法[PHP教程]
该用户从未签到主题帖子豆豆
原因:在程序中我对curl获取内容都作了较为严格的超时限制,所以就会造成无法获取内容的问题。解决方法:设置默认访问为ipv4。php的curl设置方法如下: 代码如下:&?php/*** IPV6下curl超时问题*/$ch = curl_init();curl_setopt ($ch, CURLOPT_URL, $url);curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);//设置curl默认访问为IPv4if(defined('CURLOPT_IPRESOLVE') && defined('CURL_IPRESOLVE_V4')){curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);}//设置curl请求连接时的最长秒数,如果设置为0,则无限curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);//设置curl总执行动作的最长秒数,如果设置为0,则无限curl_setopt ($ch, CURLOPT_TIMEOUT,$timeout*3);$file_contents = curl_exec($ch);curl_close($ch);注:curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4) 只有在php版本5.3及以上版本,curl版本7.10.8及以上版本时,以上设置才生效。
其它教程推荐:
上一篇:下一篇:
豆豆充值:
小白基地1、本站资源全部是百度网盘里的,不是360云盘、华为网盘,对百度云盘下载不了解请看帮助中心教程。
2、本站资源均来自网络,如侵犯您的合法权益,请发邮件至,本站将及时予以删除。
3、您在访问本站的过程中,如有任何意见、建议和疑问可直接联系本站客服反映,请勿轻信他人,谨防上当受骗!
本站资源全部来自网络和网友分享,如有侵犯您的权益,请联系网站QQ,或发邮件至。本网站尊重知识产权,无意侵犯知识产品,如有,联系网站人员,会第一时间删除!
小白基地,是小白资源网的官方网站,思必达学院官网,提供最新的创业技术支持与创业资讯,提供最新的思必达教程。是IT小白网友学习资源分享基地,中国互助创业资源网。提供诸如JAVA、PHP、MySQL、ASP、C语言等各类程序开发的教程资源。共57个文档积分:1300分
共50个文档积分:2500分
共50个文档积分:2500分
共33个文档积分:1700分
38769人查阅
38885人查阅
38969人查阅
38211人查阅
所需积分:0分用户名:zisehuainian
文章数:132
评论数:29
访问量:214431
注册日期:
阅读量:1297
阅读量:3317
阅读量:440762
阅读量:1127190
51CTO推荐博文
由于工作需要,最近在测试ipv6网络设备,发现支持ipv6测试工具还有点少,于是各种折腾。备注:对于ipv6组网及ipv6网站架设这里就不累赘了,大家可以网上搜索,现已知的IIS6.0及以上支持IPv6,apache 2.0(Linux版)以上支持,nginx支持。windows 2003的DNS不支持ipv6,2008中的dns支持ipv6。1、前置条件(1)本地环境要求本地环境[root@dr101 curl-loader-0.56]# cat /etc/redhat-release&CentOS release 6.2 (Final)[root@dr101 curl-loader-0.56]#&(2)要求安装SSL相关包,gcc、make等工具在CentOS下安装直接使用yum工具来安装即可,保证你的机器可以上外网yum install gcc make openssl官方说明查看地址:http://curl-loader.sourceforge.net/doc/fast.htmlBuild it using general C development environment with bash, gcc compiler (3 or 4 series), make, etc on a linux machine.Building pre-requirements are:a.b. openssl development package with include files (on debian package libssl-dev);curl-loader介绍& & & curl-loader(也被称为“omes-NIK”和“davilka”)是一个开源的C语言编写的工具,模拟应用负载和成千上万的几十万人的HTTP / HTTPS和FTP/ FTPS的客户端应用程序的行为,每个有其自己的源IP地址。相反,其他curl-loader使用真正的C编写的客户端协议栈,即libcurl和TLS/ openssl的SSL的HTTP和FTP协议栈,支持登录和验证口味和模拟用户行为的工具。&(3)ipv6地址配置此处以我测试的系统为例[root@dr101 curl-loader-0.56]# cat /etc/sysconfig/network-scripts/ifcfg-Auto_eth2HWADDR=00:0C:29:09:F6:42TYPE=EthernetBOOTPROTO=noneIPADDR=192.168.202.101PREFIX=24GATEWAY=192.168.202.1DNS1=202.102.192.68#如果你有ipv6的DNS,可以将ipv6的DNS也加上,这样后面可以使用域名进行压力测试DEFROUTE=yesIPV4_FAILURE_FATAL=yesIPV6INIT=yes #修改为yesIPVADDR=fc00:0:0:202::101 #添加ipv6地址,注意IPVADDR不是IPV6ADDR,有点怪异IPV6_DEFAULTGW=fc00:0:0:202::1#添加默认IPv6网关NAME="Auto eth2"UUID=4d4bee9e-f139-4ab0-95e0-57fc7c11cc37ONBOOT=yesIPV6_AUTOCONF=no#关闭IPv6自动配置IPV6ADDR=fc00:0:0:202::101/64#再次设置ipv6地址IPV6_DEFROUTE=yes#开启ipv6默认路由IPV6_FAILURE_FATAL=noGATEWAY=fc00:0:0:202::1#再次设置IPv6网关[root@dr101 curl-loader-0.56]# ifconfigeth2 & & &Link encap:Ethernet &HWaddr 00:0C:29:09:F6:42 && & & & & inet addr:192.168.202.101 &Bcast:192.168.202.255 &Mask:255.255.255.0& & & & & inet6 addr: fc00:0:0:202::101/64 Scope:Global& & & & & inet6 addr: fe80::20c:29ff:fe09:f642/64 Scope:Link& & & & & UP BROADCAST RUNNING MULTICAST &MTU:1500 &Metric:1& & & & & RX packets:5652 errors:0 dropped:0 overruns:0 frame:0& & & & & TX packets:5263 errors:0 dropped:0 overruns:0 carrier:0& & & & & collisions:0 txqueuelen:1000&& & & & & RX bytes:0.2 KiB) &TX bytes:1.3 KiB)lo & & & &Link encap:Local Loopback && & & & & inet addr:127.0.0.1 &Mask:255.0.0.0& & & & & inet6 addr: ::1/128 Scope:Host& & & & & UP LOOPBACK RUNNING &MTU:16436 &Metric:1& & & & & RX packets:76 errors:0 dropped:0 overruns:0 frame:0& & & & & TX packets:76 errors:0 dropped:0 overruns:0 carrier:0& & & & & collisions:0 txqueuelen:0&& & & & & RX bytes: KiB) &TX bytes: KiB)[root@dr101 curl-loader-0.56]#&2、下载地址官方下载地址:http://sourceforge.net/projects/curl-loader/files/curl-loader/&[root@dr101 mysoft]# wget http://ncu.dl.sourceforge.net/project/curl-loader/curl-loader-stable/curl-loader-0.56/curl-loader-0.56.tar.bz2[root@dr101 mysoft]# tar jvxf curl-loader-0.56.tar.bz2&3、安装(1)注意,如要是curl-load支持ipv6必须在安装即make之前修改Makefile文件中的如下内容修改Makefile将--disable-ipv6改为--enable-ipv6[root@dr101 curl-loader-0.56]# vi Makefile# To enable IPv6 change --disable-ipv6 to --enable-ipv6$(LIBCURL):& & & & cd ./ tar jxfv curl-$(CURL_VER).tar.bz2; ln -sf curl-$(CURL_VER) \& & & & patch -d curl -p1 & ../patches/curl-trace-info-error.patch& & & & mkdir -p $(CURL_BUILD);& & & & cd $(CURL_BUILD); ../../packages/curl/configure --prefix=$(CURL_BUILD) \& & & & --without-libidn \& & & & --without-libssh2 \& & & & --disable-ldap \# To enable IPv6 change --disable-ipv6 to --enable-ipv6#这里提示如果要使curl-load支持ipv6需要开启--enable-ipv6$(LIBCURL):& & & & cd ./ tar jxfv curl-$(CURL_VER).tar.bz2; ln -sf curl-$(CURL_VER) \& & & & patch -d curl -p1 & ../patches/curl-trace-info-error.patch& & & & mkdir -p $(CURL_BUILD);& & & & cd $(CURL_BUILD); ../../packages/curl/configure --prefix=$(CURL_BUILD) \& & & & --without-libidn \& & & & --without-libssh2 \& & & & --disable-ldap \& & & & --enable-ipv6 \#这里默认是--disable-ipv6,需要修改为--enable-ipv6& & & & --enable-thread \& & & & --with-random=/dev/urandom \& & & & --with-ssl=/usr/include/openssl \& & & & --enable-shared=no \& & & & --enable-ares=$(CARES_MAKE_DIR) \如果不理解,可以看官方文档,即查看解压后文档中的README,并搜索到ipv6:(E文还是要好好学的)[root@202 curl-loader-0.56]# vi README&NETMASK - netmask for the loading clients IP-addresses (from IP_ADDR_MIN toIP_ADDR_MAX). For IPv4 you can use either quad-dotted netmask string or CIDRnumber from 0-32. For IPv6 only CIDR values from 0 to 128 are supported.To enable IPv6 change --disable-ipv6 to --enable-ipv6 in Makefile(2)make and make install[root@dr101 curl-loader-0.56]# make[root@dr101 curl-loader-0.56]# make installmkdir -p /usr/bin&mkdir -p /usr/share/man/man1mkdir -p /usr/share/man/man5mkdir -p /usr/share/doc/curl-loader/cp -f curl-loader /usr/bincp -f doc/curl-loader.1 /usr/share/man/man1/ &cp -f doc/curl-loader-config.5 /usr/share/man/man5/cp -f doc/* /usr/share/doc/curl-loader/&cp -rf conf-examples /usr/share/doc/curl-loader/4、使用curl-load进行测试由于curl-load没用进行configure步骤,即没有指定安装目录,默认就是当前解压目录,比如我这里的/home/mysoft/curl-load-0.56(1)配置文件存放路径[root@dr101 conf-examples]# pwd/home/mysoft/curl-loader-0.56/conf-examples[root@dr101 conf-examples]# ls10K.conf & & & & & & & & & & & & &https.conf60K.conf & & & & & & & & & & & & &ipv6.confbax.conf & & & & & & & & & & & & &log-hdr-body.confbax-login-logoff-noncycling.conf &login-uas-cycling.confbax-logs.conf & & & & & & & & & & login-uas-logoff-cycling.confbig-load.conf & & & & & & & & & & multipart-formdata-post.confbulk.conf & & & & & & & & & & & & post-form-tokens-fr-file.confbulk-dual-url.conf & & & & & & & &post-xml.confcredentials.cred & & & & & & & & &put.confcustom-hdrs.conf & & & & & & & & &random_file_records.confdelete.conf & & & & & & & & & & & rate-limit.conffetch-probability.conf & & & & & &resp-errors.conffetch-probability-once.conf & & & some.xmlftp.conf & & & & & & & & & & & & &timers-random-range.confftp-http.conf & & & & & & & & & & url-randomize.confftp-upload.conf & & & & & & & & & url-template-file.txtget-forms.conf & & & & & & & & & &url-template-fr-file.confget-post-login.conf & & & & & & & url-template-resp-dynamic.confget-post-login-cycling.conf[root@dr101 conf-examples]#&(2)修改ipv6配置文件本次主要是使用curl-load进行ipv6 web服务器的测试工作,于是修改ipv6.conf文件[root@dr101 conf-examples]# vi ipv6.conf&########### GENERAL SECTION ################################BATCH_NAME= ipv6CLIENTS_NUM_MAX = 20 #10000INTERFACE & =eth2 #需要修改为你进行ipv6通信的接口,不知道了,用ifconfig查看NETMASK=64IP_ADDR_MIN= &fc00:0:0:202::111 #2001:db8:fff5:6::101,IP_ADDR_MIN &MAX是用来指定ipv6地址范围的,必须和物理接口的ipv6地址在一个网段,同时没有被其他主机使用IP_ADDR_MAX= fc00:0:0:202::130 #2001:db8:fff5:6::103 #2001:db8:fff5:ffff::1IP_SHARED_NUM=20 #上面写了地址范围,但是不是每个地址都会用上的,这里就是指明使用上面ipv6地址范围中多少个地址用来进行测试,curl-load会在本地网卡上绑定一批ipv6的地址CYCLES_NUM= -1URLS_NUM & & = 1########### URL SECTION ####################################URL= http://[fc00:0:0:216::11]/hunlian.htm #http://ip6-localhost/apache2-default/index.html 填写要测试的URL,当然URL也可以是一个文件中的多个url,注意ipv6webURL的写法,如果你使用了域名,可以直接用域名进行测试REQUEST_TYPE=GETTIMER_URL_COMPLETION = 0 &# In msec. When positive, Now it is enforced by cancelling url fetch on timeoutTIMER_AFTER_URL_SLEEP =300 #默认为1000(3)进行简单测试[root@dr101 curl-loader-0.56]# ./curl-loader -f conf-examples/ipv6.conf&会先绑定一下ipv6地址到eth2上这下err的错误少了,有了2XX即成功的请求了============ &loading batch is: ipv6 & & & ======================================--------------------------------------------------------------------------------Interval stats (latest:3 sec, clients:20, CAPS-curr:159):H/F & Req:480,1xx:0,2xx:480,3xx:0,4xx:0,5xx:0,Err:0,T-Err:0,D:2ms,D-2xx:2ms,Ti:134400B/s,To:21120B/sH/F/S Req:0,1xx:0,2xx:0,3xx:0,4xx:0,5xx:0,Err:0,T-Err:0,D:0ms,D-2xx:0ms,Ti:0B/s,To:0B/s--------------------------------------------------------------------------------Summary stats (runs:24 secs, CAPS-average:172):H/F & Req:3778,1xx:0,2xx:3778,3xx:0,4xx:0,5xx:0,Err:353,T-Err:0,D:1ms,D-2xx:1ms,Ti:132230B/s,To:20779B/sH/F/S Req:0,1xx:0,2xx:0,3xx:0,4xx:0,5xx:0,Err:0,T-Err:0,D:0ms,D-2xx:0ms,Ti:0B/s,To:0B/s=================================================================================&Manual: clients:max[20],curr[20]. Inc num: [+|*].=================================================================================ctrl+c来结束测试此时再开窗口,可以看到接口上绑定了很多ipv6的地址[root@dr101 ~]# ifconfigeth2 & & &Link encap:Ethernet &HWaddr 00:0C:29:09:F6:42 && & & & & inet addr:192.168.202.101 &Bcast:192.168.202.255 &Mask:255.255.255.0& & & & & inet6 addr: fc00:0:0:202::123/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::101/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::122/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::111/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::121/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::112/64 Scope:Global& & & & & inet6 addr: fe80::20c:29ff:fe09:f642/64 Scope:Link& & & & & inet6 addr: fc00:0:0:202::120/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::113/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::114/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::115/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::116/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::124/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::117/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::118/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::119/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::11a/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::11b/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::11c/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::11d/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::11e/64 Scope:Global& & & & & inet6 addr: fc00:0:0:202::11f/64 Scope:Global& & & & & UP BROADCAST RUNNING MULTICAST &MTU:1500 &Metric:1& & & & & RX packets:6110 errors:0 dropped:0 overruns:0 frame:0& & & & & TX packets:6005 errors:0 dropped:0 overruns:0 carrier:0& & & & & collisions:0 txqueuelen:1000&& & & & & RX bytes:4.2 KiB) &TX bytes:.0 MiB)lo & & & &Link encap:Local Loopback && & & & & inet addr:127.0.0.1 &Mask:255.0.0.0& & & & & inet6 addr: ::1/128 Scope:Host& & & & & UP LOOPBACK RUNNING &MTU:16436 &Metric:1& & & & & RX packets:76 errors:0 dropped:0 overruns:0 frame:0& & & & & TX packets:76 errors:0 dropped:0 overruns:0 carrier:0& & & & & collisions:0 txqueuelen:0&& & & & & RX bytes: KiB) &TX bytes: KiB)如何去掉这些绑定的ipv6呢?这些地址是临时加上去的,可以重启网卡service network restart来实现。5、一些参数说明(1)配置参数########### GENERAL SECTION ################################BATCH_NAME= baidu & & & & & & & & //测试对象的名称CLIENTS_NUM_MAX=20 & & //最大虚拟用户数CLIENTS_NUM_START=1 & & //一开始启动用户数 &&CLIENTS_RAMPUP_INC=1 & & //每秒钟启动几个用户INTERFACE & =eth0 & & & & //使用的网卡eth0NETMASK=16 & & & & & //子网掩码位数IP_ADDR_MIN= 192.168.1.1 & & & //起始IP地址IP_ADDR_MAX= 192.168.53.255 &#Actually - this is for self-control & & &//最后的IP地址范围CYCLES_NUM= -1 & &// -1 表示无限循环URLS_NUM= 1 &&########### URL SECTION ####################################URL=/index.html & & &//要测试的URL#URL=http://localhost/ACE-INSTALL.html & &URL_SHORT_NAME="local-index"REQUEST_TYPE=GETTIMER_URL_COMPLETION = 5000 & & &# In msec. When positive, Now it is enforced by cancelling url fetch on timeoutTIMER_AFTER_URL_SLEEP =20(2)结果参数各项参数说明:interval stats &间隔统计latest 最新数据(3秒内的)clients 并发用户数量CAPS-curr 最新发送请求数req: &request (请求)- 1xx成功NUM; &- 2xx成功NUM;- 3xx的重定向数量;- 4xx客户端错误数;- 5xx服务器错误数;& & & &平均2XX(成功)的HTTP响应中的应用服务器延时,如上,但只有2xx有应答。来推动是3xx的重定向和5xx服务器错误/拒绝未必能真实反映一个测试服务器工作的功能(D2XX);&Ti (T-in) 吞吐量“吞”,平均值,字节/每秒&To (T-out) 吞吐量“吐”,平均值,字节/每秒&Summary stats 总结统计&runs 运行时间&CAPS-average &总平均发送请求数(秒)错误类型:err & & &- 其他NUM错误,如解析,TCP连接,服务器关闭或空响应;T-err &- URL完成时间到期的错误;两个参考bloghttps://tt-/?cat=6/fnng/archive//2373954.html6、弯路及错误解决方法如果不修改Makefile即不将将--disable-ipv6改为--enable-ipv6就进行make && make install可以看到全是Err的错误,看不到2XX============ &loading batch is: ipv6 & & & ======================================--------------------------------------------------------------------------------Interval stats (latest:3 sec, clients:10, CAPS-curr:440):H/F & Req:0,1xx:0,2xx:0,3xx:0,4xx:0,5xx:0,Err:1330,T-Err:0,D:0ms,D-2xx:0ms,Ti:0B/s,To:0B/sH/F/S Req:0,1xx:0,2xx:0,3xx:0,4xx:0,5xx:0,Err:0,T-Err:0,D:0ms,D-2xx:0ms,Ti:0B/s,To:0B/s--------------------------------------------------------------------------------Summary stats (runs:9 secs, CAPS-average:458):H/F & Req:0,1xx:0,2xx:0,3xx:0,4xx:0,5xx:0,Err:4130,T-Err:0,D:0ms,D-2xx:0ms,Ti:0B/s,To:0B/sH/F/S Req:0,1xx:0,2xx:0,3xx:0,4xx:0,5xx:0,Err:0,T-Err:0,D:0ms,D-2xx:0ms,Ti:0B/s,To:0B/s=================================================================================&Manual: clients:max[10],curr[10]. Inc num: [+|*].=================================================================================在测试的时候回出现如下错误[root@202 curl-loader-0.56]# tail -n 10 ipv6.log& 1 !! ERR Couldn't resolve host 'fc00:0:0:216::11' 2 !! ERR Couldn't resolve host 'fc00:0:0:216::11' 3 !! ERR Couldn't resolve host 'fc00:0:0:216::11' 4 !! ERR Couldn't resolve host 'fc00:0:0:216::11' 5 !! ERR Couldn't resolve host 'fc00:0:0:216::11' 6 !! ERR Couldn't resolve host 'fc00:0:0:216::11' 7 !! ERR Couldn't resolve host 'fc00:0:0:216::11' 8 !! ERR Couldn't resolve host 'fc00:0:0:216::11' 9 !! ERR Couldn't resolve host 'fc00:0:0:216::11' 10 !! ERR Couldn't resolve host 'fc00:0:0:216::11'本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)

我要回帖

更多关于 curl ipv6地址 的文章

 

随机推荐