unix 在curl的循环中使用一系列本地端口,而不会由于TIME_WAIT而耗尽

3qpi33ja  于 2023-03-08  发布在  Unix
关注(0)|答案(1)|浏览(122)

我尝试在一个包含一系列端口的循环中运行curl命令,该循环运行2000次,并且在每使用5个源端口后,该范围将从端口号4000开始重新使用。但是在使用前5个端口后,我看到一个bind failed错误,因为curl会将这些旧连接保留一段时间。有没有办法删除旧连接并重新启动循环?

for i in {1...2000}
do
curl --local-port 4000-4005 http://10.52.26.22 -m 1
sleep 1
done
toe95027

toe950271#

鉴于评论中澄清的问题,考虑:

#!/usr/bin/env bash

local_port_min=4000
local_port_max=4005

for ((i=0; i<2000; i++)); do
  if (( local_port < local_port_min )) || (( local_port >= local_port_max )); then
    local_port=$(( local_port_min - 1 ))
  fi
  (( ++local_port ))
  curl -H "Connection: close" --local-port "$local_port" http://10.52.26.22 -m 1
  sleep 1
done

相关问题