我需要查明某个端口是否在特定端口范围内使用。
我正在设置一个脚本来创建php-fpm池,并希望确保我可以检查下一个未使用的可用端口。
netstat -ntpl | grep [0-9]:${1:-11211} -q ;
获取我需要查看特定端口是否正在使用的内容,但是如何为端口范围执行此操作?说... 11211 - 12655
我应该循环一个范围,并停在下一个可用的“找到”位置吗? 但是,对于一切来说,这都是我的回报。
for i in {11212..12655}
do
netstat -ntpl | grep [0-9]:${1:-i} -q ;
echo $i:$?
done
i=11212;
END=12655;
while [ $i -le $END ]; do
netstat -ntpl | grep [0-9]:${1:-i} -q ;
echo $?;
i=$(($i+1));
done;
答案 0 :(得分:3)
如果您想比较数字,grep
会让您使用正则表达式。对于范围11211-12655的正则表达式来说,打字会有点无聊。
如果使用awk
呢?
netstat -ntpl | awk 'split($4, a, ":")==2 && a[2]>=11211 && a[2]<=12655'
这将获得netstat
输出的第4列,并将其内容拆分为两个:
- 分隔的切片。然后,您可以使用数组a[]
中的数据来定义您希望它匹配的范围。
答案 1 :(得分:1)
for i in {11212..12655}
do
netstat -ntpl | grep [0-9]:${1:-i} -q ;
echo $i:$?
done
完全符合我的需要。