curl 命令相关技巧

指定网卡并格式化输出

curl 命令支持使用 --interface 参数指定网卡进行请求,并可以使用 -w 参数进行格式化输出:

~# curl --interface eth2 https://www.baidu.com/ -s -o /dev/null -w '%{local_ip}\n%{remote_ip}\n'

上面就是输出 curl 命令使用的本地和远程 IP 地址。

用户认证

例如下载文件需要用户认证,可以增加 -u 参数指定用户名和密码:

~# curl -L -O --anyauth -u "test:password" "http://XXXX/yyy.zip"

上面指定了 --anyauth 参数,curl 命令会自动判断认证方式。

如果指定 --anyauth 参数不能正常工作,就可能需要手工指定认证方式:

  • --basic
  • --digest
  • --ntlm
  • --negotiate

URL globbing 问题

curl 请求地址中包含 {}[] 之类的字符时会默认启用 URL globbing 功能,此时可能存在问题:

~# curl -L -O "http://driverdl.lenovo.com.cn/think/download/driver/9337/Intel7265wlan[jhwg07ww].exe"
curl: (3) [globbing] bad range in column 72

需要增加 -g-globoff 参数关闭 URL globbing parser 功能才能正常下载。