知识点
1、curl如何单引号、双引号结合使用
2、curl中如果只使用双引号且绑定变量
3、curl下载网络资源
3、curl扩展,性能监控
单引号、双引号结合使用
参数是在单引号中,比如 'Content-type:application/json'
json中的 k-v 是要在双引号中,所以如果遇到要在curl中使用变量,就使用 字符串拼接
curl -i -X POST -H 'Content-type:application/json' \
-d '{"msgtype": "text", "text": {"content": "'$warnmsg'"}}' \
'https://oapi.dingtalk.com/robot/send?access_token=xxx'
全部使用双引号
不方便的地方在于json中的k-v都需要使用双引号,那就需要进行转移",如果json中的k-v很多,那就书写有点麻烦
curl -X POST -H "Content-Type:application/json" \
-d "{\"userid_list\": \"${userid}\" ,\"msg\": {\"msgtype\": \"text\", \"text\": {\"content\": \"${build_msg}\"}}}" "https://oapi.dingtalk.com/robot/send?access_token=xxx"
补充
1、curl下载文件
- -o filename
-o
参数需要后面紧跟一个自定义的文件名
所以除了URL是具体的文件地址之外,URL也可以是非具体地址,比如 https://www.baidu.com 会报错整个网页的内容
- -O
该参数后面跟的URL地址只能是具体的文件地址
另外
-C
可以实现断点续传
-#
显示下载进度
-s
静默输出
-A
模拟浏览器,比如Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.0)
-e
伪造referer(盗链)
2、监控网页请求性能
核心是利用-w
参数(--write-out)使用curl内置的标识来输出请求过程的一些性能数据,比如状态码、总响应时长、DNS解析时长等
比如
curl -s -o /dev/null -w "%{http_code} %{remote_ip} %{time_total}" https://www.baidu.com
输出了状态码、用户IP和响应时长
具体的标识有:
- content_type
- filename_effective
- ftp_entry_path
- http_code http状态码
- http_connect
- local_ip
- local_port
- num_connects
- num_redirects
- redirect_url
- remote_ip
- remote_port
- size_download
- size_header
- size_request
- size_upload
- speed_download
- speed_upload
- ssl_verify_result
- url_effective
重点关注这几个时间相关的
- time_appconnect
连接建立完成时间,如SSL/SSH等建立连接或者完成三次握手时间 - time_connect
连接时间,从开始到建立TCP连接完成所用时间,包括前边DNS解析时间,如果需要单纯的得到连接时间 - time_namelookup
DNS解析时间 - time_pretransfer
从开始到准备传输时间 - time_redirect
重定向时间,包括到最后一次传输前的几次重定向的DNS解析,连接,预传输,传输时间 - time_starttransfer
开始传输时间。在发出请求之后,Web 服务器返回数据的第一个字节所用的时间 - time_total
总时间,单位秒,精度为小数点后三位