Linux 使用 curl 命令简单测试网络
curl 是 Linux 系统是一个数据传输的工具,它支持多种协议,多用 API 请求测试、文件上传下载、数据抓取等。同时该命令也可用作网络测试,但是使用该命令测试网络时,返回的结果可能较为多样,有时不好根据返回结果统一进行判断网络情况。
curl 是 Linux 系统是一个数据传输的工具,它支持多种协议,多用 API 请求测试、文件上传下载、数据抓取等。同时该命令也可用作网络测试,但是使用该命令测试网络时,返回的结果可能较为多样,有时不好根据返回结果统一进行判断网络情况。
curl 的基本语法
curl [参数] [URL]
curl -v localhost:80
| 参数 | 描述 |
| -X | 指定请求方法(GET、POST等) |
| -o |
将响应结果保存到文件中 |
| -v | 显示详细的请求以及响应信息 |
| -s | 静默模式,不显示相关信息 |
执行结果如下

对于22端口,返回的结果是因为 curl 通常不兼容 ssh 的协议,但是实际使用 telnet 命令测试,可以看出该端口确实通的。
对于80端口,返回结果显示连接被拒绝,实际通过 telnet 进行测试,确实该端口不通。

因此通常情况下使用 curl 可以测试 http 服务的端口应用。
相关脚本
而针对 http 协议的返回,通常情况下成功便会返回相关的响应信息,如 html 文本信息。因此可以根据返回的结果中是否包含相关 html 信息来初步判断该端口的网络是否疏通。
#!/bin/bash
# HOSTS_FILE="hosts_ports.txt"
RESULT_FILE="curl_results.txt"
search_strings=("Connected" "<html>" "OpenSSH")
> "$RESULT_FILE"
while IFS=: read -r ip port; do
URL="http://$ip:$port"
echo "Testing $URL..." >> "$RESULT_FILE"
TMP_OUTPUT_FILE="$(mktemp)"
search="Connected"
timeout 5 curl -v "$URL" 2>&1 >> "$TMP_OUTPUT_FILE"
echo "=======================内容开始=====================" >> "$RESULT_FILE"
found=false
for string in "${search_strings[@]}"; do
# 使用grep检查临时文件中是否包含该字符串
if grep -qF "failed" "$TMP_OUTPUT_FILE"; then
found=false
echo "Found string: failed"
break
fi
if grep -qF "$string" "$TMP_OUTPUT_FILE"; then
# 如果找到匹配项,设置标志变量为true并打印找到的字符串
found=true
echo "Found string: $string"
# 如果你只想在找到第一个匹配项时停止搜索,可以取消下面的注释
break
fi
done
if [ "$found" = true ]; then
echo "$ip $port is reachable 成功通过" >> "$RESULT_FILE"
else
echo "$ip $port is not reachable 失败不通" >> "$RESULT_FILE"
fi
rm "$TMP_OUTPUT_FILE"
echo "=======================内容结束=====================" >> "$RESULT_FILE"
done < hosts_ports.txt
echo "CURL tests completed. Results are saved in $RESULT_FILE"
可以对以上文本进行修改,上面的文本是根据返回的响应结果中是否包含 "Connected" "<html>" "OpenSSH" 其中某个字符串来判断是否网络疏通。
IP端口文件格式如下,可以自行修改。

执行脚本
bash 测试脚本.sh

最后可以将结果保存到文件中,根据需要进行调整和使用。
相关信息可以参考
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)