curl

curl工具,是一种常用的工具,在Linux环境中,可以用来发送请求,完成各种与api的互动。应用的场景还是非常多的。比如,常见curl -sSll | sh 来执行远程的shell,达到自动完成安装等命令。

示例命令

上传文件

以@符号来修饰要上传的文件

curl -F "uploads=@/opt/1.flv" -F "path=."  http://localhost:8004/upload.php

获取响应码的示例

curl -w "%{http_code}\n" -s -o '/dev/null'   http://www.xxx.com

说明:

s-w 会在原有的结果上增加一行,内部的,是其变量

-s 屏蔽错误的输出

-o 文件另存为,即返回的html导入到/dev/null,而它是能吃掉无穷的东西,表示,丢弃输出。另外,也可以用从定向,能保存输出流,效果应该是一样的。-o /dev/null也是可以的,可以省略掉双引号。

get

post

json

直接请求

发送json数据,token验证。

curl -H "Authorization: Bearer eyJrI......" -H "Content-Type:application/json" --data '<具体的json数据>'  url

钉钉示例

curl -H 'Content-Type: application/json' \
    -d "{\"msgtype\": \"text\", \"text\": {\"content\": \"$msg\"}}" \
    https://oapi.dingtalk.com/robot/send?access_token=钉钉token

备注:因为需要往json中注入变量,故使用了双引号,而内部的内容,都要转换成双引号。转换工具如下:

cat <<EOL |sed 's#"#\\"#g'
{"msgtype": "text", "text": {"content": ""}}
EOL

使用文件

curl执行的pwd路径下,存在json文件

curl -u "username:password" -X POST -H "Content-Type: application/json" "http://192.168.1.1:5000/api/v2.0/users" -d @finance-department.json

参数

主要用到的参数有:

参数 说明 取值
-X 指定请求的方式 get/post
–request 同上
-v 显示请求头,多次重定向,也能看到
-L 允许302跳转
-o 文件另存为,跟重定向差不多
-s 好像是屏蔽错误输出
-d post的请求参数中的,内容
–data 貌似同上