curl命令怎么算成功,curl命令
Linux运维命令Curl - 日常用法总结
在Linux系统中,curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具。它支持文件的上传和下载操作,是综合传输工具,习惯上称url为下载工具。下面就日常运维中基于curl命令使用做下总结
一、Curl命令用法
1. curl语法和参数选项
# curl [option] [url]
curl常见参数
2. curl使用说明
curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面。它支持多种协议,下面说下curl命令的日常使用示例:
3. curl上传文件的用法(POST请求方式)
一般来说,我们都会用curl下载网页,但是curl上传文件则不常用。下面说下curl模拟"multipart/form-data"形式的form上传文件, 命令稍稍复杂些。
4. curl常用示例
5. curl命令的超时时间
二、Curl的GET、POST、PUT、DELETE请求
1. GET、POST、PUT、DELETE含义与区别
2. GET、POST、PUT、DELETE四种请求方式的curl访问
怎么判断curl调用接口返回成功:响应码
背景:最近高可用测试,双机倒换后,需要统计多久倒换结束了。我的方法是通过业务来测试,客户端和服务端都能正常访问了,对外提供服务的能力肯定就提供了。
因为不知道什么时候倒换开始和结束,需要每一秒都发curl请求,然后统计每次调用接口的时间和响应结果,并根据响应结果写入文件,方便统计和分析测试结果。
我选择简单的shell脚本,上手快。Python的话需要环境上安装相应软件,请求的响应更容易处理更便于处理。本文选择shell,curl来发请求。
1) #! /bin/bash
# 指脚本使用/bin/bash来解释执行,#!是对脚本的解释器程序路径。标记为#!/bin/sh的脚本不应使用任何POSIX没有规定的特性 (如let等命令, 但#!/bin/bash可以)。
2) while循环的格式
while expression
do
command
command
```
done
或while [条件判断式]
do
程序
done
举例:计数器控制的while循环
#!/bin/bash
int=1
while [ $int=5 ]
do
? ? echo $int
? ? let "int++"
done
3) if判断
if [ 条件判断一 ] (||) [ 条件判断二 ]; then
elif [ 条件判断三 ] (||) [ 条件判断四 ]; then
else
? 执行第三段内容程式
fi
4) curl
curl -I -s --connect-timeout 5 -m 5 -w "%{http_code}" -o /dev/null?
200
-I/--head 仅返回消息头部,使用HEAD请求
-s/--slient 减少输出的信息,比如进度
--connect-timeout seconds 指定尝试连接的最大时长
-m/--max-time seconds 指定处理的最大时长
-w "参数"? 自定义curl的输出
-o/--output file 指定输出文件名称
#!/bin/bash
#根据测试背景填写连接超时时长,单位秒
ct=5
#根据测试背景填写响应最大时长,单位秒
rm=5
#根据测试背景填写URL
uri=""
i=1
while [ $i=36000 ]
do
? ? echo? `date` === $i === get-baidu.log
? ? let i++
? ? resp=`curl -I -s --connect-timeout $ct -m? $rm -w "%{http_code}" -o /dev/null? $url`
? ? ? if [ $resp==200 ]; then
? ? ? ? ? ? ? echo? `date`? == $i ==$resp? get-baidu.log
? ? ? else
? ? ? ? ? ? echo? `date`? == $i ==$resp? get-baidu.log
? ? ? ? ? ? echo? `date`? == $i ==$resp? get-baidu-fail.log
fi
done
找个和待测试环境网络可达的Linux环境,修改相关信息,直接运行即可。
注意uri是get请求,如果是post需要修改curl。
如果需要token认证则根据待测系统的实现进行携带token , 修改curl命令即可。
如果需要ssl证书,则携带相应证书,修改curl命令即可。
如果是ipv6的URL,curl中带上-6 -g参数。
计算响应时长(本例子是双机倒换时长)日志查看,从 get-baidu-fail.log找到失败点,在总的日志中找到相应记录,进行计算即可。
curl命令在PHP中怎么用
这是我项目中一直在用的一个方法
?php
function?curl($url,$params?=?array(),$header?=?array(),$timeout?=?180){
????if(empty($url))?return?$url;
????$curl?=?curl_init();
????curl_setopt($curl,?CURLOPT_URL,$url);//请求url地址
????curl_setopt($curl,?CURLOPT_HTTPHEADER?,?$header?);??//构造IP
????
????if(!empty($params)??count($params)??0){
????????curl_setopt($curl,?CURLOPT_POST,?true);
????????
????????//Request?Payload格式数据
????????if(isset($params['is_json'])??$params['is_json']?===?true){
????????????unset($params['is_json']);
????????????$params?=?json_encode($params);
????????}else{
????????????$params?=?http_build_query($params);
????????}
????????curl_setopt($curl,?CURLOPT_POSTFIELDS,?$params);????????
????}
????//curl_setopt($curl,?CURLOPT_HEADER,?true);//是否返回响应头信息
????curl_setopt($curl,?CURLOPT_RETURNTRANSFER,?true);//是否将结果返回
????curl_setopt($curl,?CURLOPT_FOLLOWLOCATION,?true);//是否重定向
????//curl_setopt($curl,?CURLOPT_USERAGENT,?'Mozilla/5.0?(Windows?NT?6.1;?WOW64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/51.0.2704.106?Safari/537.36');
????curl_setopt($curl,?CURLOPT_SSL_VERIFYPEER,?false);???//?只信任CA颁布的证书??
????//curl_setopt($curl,?CURLOPT_CAINFO,?$cacert);?//?CA根证书(用来验证的网站证书是否是CA颁布)??
????//curl_setopt($curl,?CURLOPT_SSL_VERIFYHOST,?2);?//?检查证书中是否设置域名,并且是否与提供的主机名匹配??
????//?从证书中检查SSL加密算法是否存在
????curl_setopt($curl,?CURLOPT_SSL_VERIFYHOST,?FALSE);
????curl_setopt($curl,?CURLOPT_HTTP_VERSION,?CURL_HTTP_VERSION_1_0);?
????//curl_setopt($curl,?CURLOPT_HTTPHEADER,?array("Expect:?"));?
????curl_setopt($curl,?CURLOPT_IPRESOLVE,?CURL_IPRESOLVE_V4?);
????curl_setopt($curl,?CURLOPT_CONNECTTIMEOUT,?$timeout);//用来告诉PHP脚本在成功连接服务器前等待多久(连接成功之后就会开始缓冲输出),这个参数是为了应对目标服务器的过载,下线,或者崩溃等可能状况;
????curl_setopt($curl,?CURLOPT_TIMEOUT,?$timeout);//用来告诉成功PHP脚本,从服务器接收缓冲完成前需要等待多长时间。如果目标是个巨大的文件,生成内容速度过慢或者链路速度过慢,这个参数就会很有用。
????//?自动设置Referer
????curl_setopt($curl,?CURLOPT_AUTOREFERER,?1);
????//curl_setopt($curl,?CURLOPT_COOKIEJAR,?"D:phpStudyWWWcjcooBE66.tmp");//?//写入cookie信息
????//setcookie('cookie_jar',?$cookie_jar);?//保存cookie路径
????$data?=?curl_exec($curl);?//执行????
????curl_close($curl);
????return?$data;
}
?
curl 命令详解
[TOC]
最好用登录页面测试,因为你传值过去后,回抓数据,你可以看到你传值有没有成功
用的时候,把他们cat一下就OK了, cat img.part* img.jpg
curl(7.29.0)所支持的选项(options)参数如下
引用
如何获取linux curl命令的执行结果
可以用 $? 获取上一条shell命令的返回结果。
一般的约定是: 0 表示成功,非0表示失败。
例如:你可以试验一下
执行正确的shell 命令: 执行 ls,然后紧接着 echo $?
执行错误的shell 命令: 执行 ls /abcdefg,然后紧接着 echo $?
Curl 命令
一、基础请求
1、Get 请求
命令格式: curl requesturl
例如: curl
2、Post 请求
命令格式: curl -X POST requesturl
例如: curl -X POST
二、指定ip发送请求
1、http命令格式:
curl -H 'Host:requestHost'
或 curl -x ip:port
例如:
curl -H 'Host:kunpeng.csdn.net'
curl -x '101.201.173.208:80'
2、https命令格式:
curl -H 'Host:requestHost'
或 curl ip -k
例如:
curl -H 'Host:kunpeng.csdn.net' -k
curl '101.201.173.208' -k
三、带参数的POST请求
命令格式:
1、head请求参数用 -H表示(一个横杆)
2、如果命令需要换行,在换行处加 反斜杠
3、body请求参数用 --data表示(两个横杆);请求内容有引号时,加反斜杠\
例如: