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 | 貌似同上 | ||