小编Cha*_*les的帖子

将 IP 地址批量转换为 CIDR 的 Bash 脚本?

好的,问题来了。

我有一个 IP 地址的纯文本列表,我在我的服务器上阻止了这些地址,每天都变得越来越笨拙(仅今天就增加了 3000 多个条目)。

它已经针对重复项进行了排序,因此这不是问题。我想做的是编写一个脚本来完成它并更好地合并条目以进行大规模阻塞。

例如,拿这个:

2.132.35.104
2.132.79.240
2.132.99.87
2.132.236.34
2.132.245.30
Run Code Online (Sandbox Code Playgroud)

并将其变成这样:

2.132.0.0/16
Run Code Online (Sandbox Code Playgroud)

关于如何在 bash 脚本中编码的任何建议?

更新:我已经部分地解决了如何做我需要的事情。将其转换为 /24 很容易,如下所示:

cat /usr/local/blocks/blocks.txt | while read line; do
    oc1=`echo "$line" | cut -d '.' -f 1`
    oc2=`echo "$line" | cut -d '.' -f 2`
    oc3=`echo "$line" | cut -d '.' -f 3`
    oc4=`echo "$line" | cut -d '.' -f 4`
    echo "$oc1.$oc2.$oc3.0/24" >> twentyfour.srt
done

sort -u twentyfour.srt > twentyfour.txt
rm -f twentyfour.srt
ori=`cat /usr/local/blocks/blocks.txt | wc -l`
new=`cat twentyfour.txt …
Run Code Online (Sandbox Code Playgroud)

ip bash iptables batch-file

2
推荐指数
1
解决办法
4908
查看次数

标签 统计

bash ×1

batch-file ×1

ip ×1

iptables ×1