You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Shell脚本中提取IP并写入文件(基于nc端口连通性检测)

解决方案

单例检测脚本优化

你不需要从nc的输出里提取IP,目标IP是已知的,直接在连通成功时写入文件即可。修改后的脚本如下:

target_ip="162.247.241.14"
target_port="8080"

# 执行检测,将输出重定向到/dev/null避免干扰屏幕输出
nc -zv "$target_ip" "$target_port" >/dev/null 2>&1
if [ $? -eq 0 ]; then
    echo "$target_ip" >> output.txt
fi

批量检测脚本修正

批量脚本里存在变量名错误(portno1/portno2应为port1/port2),而且同样不需要提取IP——循环中的$host就是待检测的目标IP,直接写入即可。优化后的脚本:

port1=80
port2=8080

# 遍历hostfile.txt中的每个IP
for host in $(cat hostfile.txt); do
    # 检测第一个端口
    nc -zv "$host" "$port1" >/dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo "$host" >> output.txt
    fi
    # 检测第二个端口
    nc -zv "$host" "$port2" >/dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo "$host" >> output.txt
    fi
done

可选:记录带端口的连通信息

如果需要同时记录IP和连通成功的端口,可将echo内容修改为:

echo "$host:$port1" >> output.txt

补充:特殊场景下从nc输出提取IP

如果确实需要从nc的成功输出中动态提取IP(比如输出来源不固定的情况),可以这样捕获并提取:

result=$(nc -zv 162.247.241.14 8080 2>&1)
if echo "$result" | grep -q "succeeded"; then
    # 用awk提取成功输出中的IP字段(对应输出里的第三个字段)
    echo "$result" | awk '{print $3}' >> output.txt
fi

内容的提问来源于stack exchange,提问作者NIMI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 22:52:27