我试图将ip地址(即192.168.192.168)与列表进行匹配:
192.168.192.0/24 TESTCOMMENT ...
我知道ipset
支持评论,所以我尝试了以下内容:
$ ipset create foo hash:net comment
$ ipset add foo 192.168.192.0/24 comment TESTCOMMENT
$ sudo ipset test foo 192.168.192.168
192.168.192.168 is in set foo.
如您所见,我的评论未显示。我的下一个尝试是使用grepcidr
$ cat foo.txt
192.168.192.0/24 TESTCOMMENT
$ grepcidr -f foo.txt <(echo 192.168.192.168)
192.168.192.168
$ grepcidr -f foo.txt <(echo 192.168.0.168)
$
匹配但未显示评论。
有人知道尝试的替代方案吗?
答案 0 :(得分:0)
在其他人的帮助下,我们已经解决了这个问题。我们使用rgxg将文件中的子网更改为正则表达式。
$awk -v ip=192.168.192.168 '{ "rgxg cidr " $1 | getline regex; if (ip ~ regex) print $2 }' foo.txt
TESTCOMMENT
我使用的解决方案是将正则表达式保存到文件中:
192.168.192。(25 [0-5] | 2 [0-4] [0-9] | 1 [0-9] {2} | [1-9]?[0-9])TESTCOMMENT
并使用以下行测试IP地址:
$ ip=192.168.192.168; while read line; do [[ $ip =~ ${line%% *} ]] && echo ${line##* }; done < foo.txt
TESTCOMMENT