Bash脚本获取端口使用

时间:2016-09-16 13:57:33

标签: bash

我需要查明某个端口是否在特定端口范围内使用。

我正在设置一个脚本来创建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;

2 个答案:

答案 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

完全符合我的需要。