linux curl 使用详解 常见应用

简介:

curl


1 http 超时

-m 指定超时的时间 等于--connect-timeout


2 输出到空

-o /dev/null 不输出,正常是输出html格式


3 -w 指定格式输出


4 -s 去掉所有状态信息的输出


5 -F 上传表单


6 -e/--referer <URL>  指定referer


7 -H/--header <header> 指定Header头部


8 -v 查看详细的请求建立信息,可以看到request的Header头部


9 -L 当重定向的时候,发起新的请求


10 --user 认证的用户名


11 -XGET  请求方式,默认是GET


12 --data-binary  以二进制的方式上传,没有任何处理

 

13 --data-urlencode 大致等同于-d 或者--data


14 -o Write output to <file> instead of stdout


15 -x 代理访问


三者区别:

-d/--data is the same as --data-ascii. To post data purely binary, you should instead use the --data-binary option. To URL-encode  the

value of a form field you may use --data-urlencode.





应用一: 超时设置


curl -m 3 -o /dev/null -s -w %{http_code}"\n"  www.letuknowit.com


只输出状态码,并换行"\n"



注意如果超时 http_code 是 000



应用二: 探测web各个链路建立响应的时间点


curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total}:%{time_namelookup}"\n" http://www.canada.com


0.081:0.272:0.779:0.356


清单 1 给出对一个流行的新闻站点执行 curl 命令的情况.输出通常是 HTML 代码,通过 -o 参数发送到 /dev/null.-s 参数去掉所有状态信息.-w 参数让 curl 写出表 1 列出的计时器的状态信息:


表 1. curl 使用的计时器


计时器描述

time_connect建立到服务器的 TCP 连接所用的时间

time_starttransfer在发出请求之后,Web 服务器返回数据的第一个字节所用的时间

time_total完成请求所用的时间

time_namelookupDNS解析时间,从请求开始到DNS解析完毕所用时间(记得关掉 Linux 的 nscd 的服务测试)

speed_download下载速度,单位-字节每秒。

这些计时器都相对于事务的起始时间,甚至要先于 Domain Name Service(DNS)查询.因此,在发出请求之后,Web 服务器处理请求并开始发回数据所用的时间是 0.272 – 0.081 = 0.191 秒.客户机从服务器下载数据所用的时间是 0.779 – 0.272 = 0.507 秒.





应用三: 上传表单数据 上传图片

curl -e "http://www.kkfang.com/cuizhiliang" -F "filename=@./testtest_1111.jpg" "http://upload.kkfang.com/upload/housea.html"



示例:

-F/--form <name=content

curl -F "file=@localfile;filename=nameinpost" url.com



@后面接的是一个文件路径



应用四: 模拟修改Header头部


-H "Cache-Control:no-cache"

curl  -x127.0.0.1:6081 "http://www.kkfang.com/bj" -H "User-agent:"Googlebot""


多个Header头一起使用


curl -v -I -H "Host:www.kkfang.com" -H "User-Agent:Ba" http://www.kkfang.com


curl -v -I -H "Host:www.kkfang.com" -H "User-Agent:Ba"  -H "Cache-Control:no-cache" http://www.kkfang.com





应用五: 重定向的主站

curl -IL  http://www.dianping.com


会302 跳转到城市列表页 Location:/citylist


301重定向与302重定向的区别

  302重定向是暂时的重定向,搜索引擎会抓取新的内容而保留旧的网址。因为服务器返回302代码,搜索引擎认为新的网址只是暂时的。 SEO 302好于301

  301重定向是永久的重定向,搜索引擎在抓取新内容的同时也将旧的网址替换为重定向之后的网址。




应用六: --user  调用jenkins的api 获取配置文件

curl -XGET http://jenkins.anhouse.com.cn/job/ST-ananzu-service/config.xml --user cuizhiliang344:Czl110123






应用七: post数据,加上shell的变量传递,执行jenkins JOB并修改数据

/usr/bin/curl -m 5 -s -w %{http_code} -X POST JENKINS_URL/job/JOB_NAME/build --data-urlencode json='{"parameter": [{"name":"id", "value":"123"}, {"name":"'${_TASK_NAME}'", "value":"high"}]}'



上json数据  并且变量中存在变量

方法1: "'" ${shell变量}"'"

curl -s --url $QINIU_FLUX_API -X POST  -H "Content-Type: application/json"  -H "Authorization: $QINIU_FLUX_TOKEN"  -d '{

    "startDate": "'"$YESTERDAY"'",

    "endDate": "'"$YESTERDAY"'",

    "granularity": "day",

    "domains": "dfs.anhouse.com;img.anhouse.com;cdn-event.pinganfang.com;cdn-event.m.pinganfang.com"

}' > ${QINIU_FLUX_STATUS}


方法2: '${变量}' 如以下的两个区别

#值所在的代表值


1
2
3
4
5
6
7
8
declare  -A TYPE_ID
TYPE_ID=([internal]=0 [external]=1
         #注意上下区分 传递的类型不同
for  _type  in  external internal
do
         #/usr/bin/curl -s ${URLAPI} -H  "Content-type: application/json" -X POST -d '{"domain_type":"'"${TYPE_ID["${_type}"]}"'","total":"'"${_type_number}"'","stats_time":"'"${F_YESTERDAY}"'"}'
         /usr/bin/curl  -s ${URLAPI} -H   "Content-type: application/json"  -X POST -d  '{"domain_type":' ${TYPE_ID[ "${_type}" ]} ',"total":' ${_type_number} ',"stats_time":"' "${F_YESTERDAY} "'" }'
done



注释: 如果post上传的应用程序total参数只接受int型,那么只能用下面的方法,上面的方式会出现string的类型。


应用八: 输出内容

curl -s -XGET http://jenkins.anhouse.com.cn/job/ST-ananzu-service/config.xml --user cuizhiliang344:Czl110123   -o config.txt


或者使用> 进行重定向

curl -s -XGET http://jenkins.anhouse.com.cn/job/ST-ananzu-service/config.xml --user cuizhiliang344:Czl110123  > config.txt

本文转自残剑博客51CTO博客,原文链接http://blog.51cto.com/cuidehua/1962915如需转载请自行联系原作者

cuizhiliang
相关文章
|
10月前
|
安全 应用服务中间件 网络安全
在Linux环境部署Flask应用并启用SSL/TLS安全协议
至此,你的Flask应用应该能够通过安全的HTTPS协议提供服务了。记得定期更新SSL证书,Certbot可以帮你自动更新证书。可以设定cronjob以实现这一点。
739 10
|
10月前
|
Java Linux 网络安全
Linux云端服务器上部署Spring Boot应用的教程。
此流程涉及Linux命令行操作、系统服务管理及网络安全知识,需要管理员权限以进行配置和服务管理。务必在一个测试环境中验证所有步骤,确保一切配置正确无误后,再将应用部署到生产环境中。也可以使用如Ansible、Chef等配置管理工具来自动化部署过程,提升效率和可靠性。
987 13
|
9月前
|
存储 数据采集 监控
ubuntu(linux)系统主要应用于哪些工业场景中?研维三防ubuntu系统的手持工业三防平板电脑在哪些行业中有实际应用
Ubuntu 系统凭借其独特的优势,在众多工业场景中得到了广泛应用,为工业数字化、智能化发展提供了有力支持。而研维三防基于 Ubuntu 定制系统的手持工业三防平板电脑,更是将 Ubuntu 系统的优势与工业级的性能、坚固耐用性完美结合,在电力、物流、制造等多个行业中展现出强大的应用价值,助力企业提高生产效率、优化管理流程、提升产品质量,成为推动工业现代化发展的重要力量。随着技术的不断进步与创新,相信 Ubuntu 系统以及研维三防这类工业级设备将在更多的工业领域中发挥更大的作用,为工业发展带来更多的机遇与变革。
|
JSON 运维 Ubuntu
Linux下如何使用Curl进行网络请求
希望这篇文章能帮助您在Linux下更好地使用Curl进行网络请求。如有疑问,请随时提问!
811 10
|
Linux API
Linux下载工具wget与curl
`wget` 是一个用于从网络下载文件的命令行工具,支持HTTP、HTTPS和FTP协议。它能自动处理下载中断,并支持递归下载网站内容。基本用法:`wget URL`,可指定文件名(`-O`)、保存目录(`-P`),还支持断点续传(`-c`)、限速(`--limit-rate`)和递归下载(`-r`)。相比之下,`curl` 更侧重于发送各种HTTP请求(如GET、POST),并支持文件上传、自定义请求头和cookie等功能。
707 10
|
机器学习/深度学习 安全 Linux
Linux 主要应用领域的归纳
服务器领域 Linux在服务器领域的应用是其最为广泛和成熟的领域之一。由于其开源、稳定、高效和安全的特性,Linux成为许多企业服务器的首选操作系统。 Web服务器:Linux是Web服务器的理想选择,因为它支持Apache、Nginx等流行的Web服务器软件,这些软件在Linux上运行稳定且性能卓越。Linux服务器可以高效地处理大量并发请求,提供快速、可靠的Web服务。 数据库服务器:Linux也广泛用于数据库服务器,如MySQL、PostgreSQL和Oracle等数据库管理系统在Linux上运行良好。Linux的稳定性和安全性使得它成为存储和管理敏感数据的理想平台。 邮件服务器:Lin
796 5
|
缓存 Linux 开发者
Linux内核中的并发控制机制:深入理解与应用####
【10月更文挑战第21天】 本文旨在为读者提供一个全面的指南,探讨Linux操作系统中用于实现多线程和进程间同步的关键技术——并发控制机制。通过剖析互斥锁、自旋锁、读写锁等核心概念及其在实际场景中的应用,本文将帮助开发者更好地理解和运用这些工具来构建高效且稳定的应用程序。 ####
352 5
|
存储 安全 关系型数据库
Linux系统在服务器领域的应用与优势###
本文深入探讨了Linux操作系统在服务器领域的广泛应用及其显著优势。通过分析其开源性、安全性、稳定性和高效性,揭示了为何Linux成为众多企业和开发者的首选服务器操作系统。文章还列举了Linux在服务器管理、性能优化和社区支持等方面的具体优势,为读者提供了全面而深入的理解。 ###
|
Unix Linux Ruby
在windows和linux上高效快捷地发布Dash应用
在windows和linux上高效快捷地发布Dash应用
806 4
|
Linux iOS开发 开发者
跨平台开发不再难:.NET Core如何让你的应用在Windows、Linux、macOS上自如游走?
【8月更文挑战第28天】本文提供了一份详尽的.NET跨平台开发指南,涵盖.NET Core简介、环境配置、项目结构、代码编写、依赖管理、构建与测试、部署及容器化等多个方面,帮助开发者掌握关键技术与最佳实践,充分利用.NET Core实现高效、便捷的跨平台应用开发与部署。
1796 3