使用 CURL 命令调试和诊断网络问题,网站请求测速

原文:https://ichochy.com/posts/shell/20241001.html

curl 是一个命令行工具,用于在网络上发送和接收数据。它支持多种协议,包括 HTTP、HTTPS、FTP、SFTP 等,广泛应用于 Web 开发、API 测试和网络调试。

使用场景

执行过程:

curl  https://ichochy.com

常用选项

curl -w

支持多种变量,可以用来获取详细的请求信息。
以下是一些常用的变量:

示例

curl -o /dev/null -s -w "HTTP Status: %{http_code}\nTotal Time: %{time_total} seconds\n"  https://ichochy.com

参数说明

网站请求测速

测速脚本

完整脚本:speedtest.sh

#! /bin/bash

# 网络访问测试
# 通过CURL命令测试网络访问时间
# author: 	iChochy
# site:		https://ichochy.com

read -p "测速URL(可为空):" url

if [ -z $url ]
then
	url="https://ichochy.com"
fi

echo "测速URL:$url"

echo "开始测速…………"

curl -o /dev/null -s -w time_namelookup:"\t"%{time_namelookup}"\n"time_connect:"\t\t"%{time_connect}"\n"time_appconnect:"\t"%{time_appconnect}"\n"time_pretransfer:"\t"%{time_pretransfer}"\n"time_starttransfer:"\t"%{time_starttransfer}"\n"time_total:"\t\t"%{time_total}"\n"time_redirect:"\t\t"%{time_redirect}"\n"  $url

echo "循环测速…………"
i=1
while  (($i<=5))
do
printf "第"$i"次:"

curl -o /dev/null -s -w time_connect:"\t"%{time_connect}"\t"time_total:"\t"%{time_total}"\n" $url 
let i++

done

echo "####################################"
echo "字段说明:"
echo "time_namelookup \t# 从开始计算,域名解析完成的耗时"
echo "time_connect \t\t# 从开始计算,TCP建立完成的耗时"
echo "time_appconnect \t# 从开始计算,应用层握手完成的耗时"
echo "time_pretransfer \t# 从开始计算,准备传输数据的耗时"
echo "time_starttransfer \t# 从开始计算,开始接收数据的耗时"
echo "time_total \t\t# 从开始记算,完成接收数据的耗时"
echo "time_redirect \t\t# 重定向的耗时,没有重定向时间为0"

脚本使用

mleo@Mac[mleo]: sh ./speediest.sh
测速URL(可为空):
测速URL:https://ichochy.com
开始测速…………
time_namelookup:	0.000695
time_connect:		0.001227
time_appconnect:	0.614623
time_pretransfer:	0.614876
time_starttransfer:	0.968854
time_total:		0.970281
time_redirect:		0.000000
循环测速…………
第1次:time_connect:	0.000799	time_total:	1.136176
第2次:time_connect:	0.001501	time_total:	0.806167
第3次:time_connect:	0.001580	time_total:	0.710288
第4次:time_connect:	0.001136	time_total:	0.612873
第5次:time_connect:	0.000909	time_total:	0.768882
####################################
字段说明:
time_namelookup 	# 从开始计算,域名解析完成的耗时
time_connect 		# 从开始计算,TCP建立完成的耗时
time_appconnect 	# 从开始计算,应用层握手完成的耗时
time_pretransfer 	# 从开始计算,准备传输数据的耗时
time_starttransfer 	# 从开始计算,开始接收数据的耗时
time_total 		# 从开始记算,完成接收数据的耗时
time_redirect 		# 重定向的耗时,没有重定向时间为0

总结

curl 是一个强大的命令行工具,用于在网络上发送和接收数据,支持多种协议如 HTTP、HTTPS、FTP 等。
它允许用户灵活地执行各种请求,包括 GET、POST 等,并能够自定义请求头和数据。
curl 适合进行 API 测试、文件传输和网络调试,支持身份验证和 SSL/TLS 加密,适用于多种操作系统。
通过简单的命令,用户可以轻松与服务器进行交互并获取详细的请求和响应信息。

打赏

Sponsor