Python 检查IP是否在使用NetAddress的IP网络列表中
如果没有多个if语句,我很难做到这一点 伪代码:Python 检查IP是否在使用NetAddress的IP网络列表中,python,ip,cidr,Python,Ip,Cidr,如果没有多个if语句,我很难做到这一点 伪代码: ips = [...a list of around 1000 IPs] cidr_list = ['192.168.10.0/24', '10.10.10.0/24', '192.168.3.0/24'] for ip in ips: if ip in cidr_list: print ip 任何人都知道使用NetAddress的IPAddress和IPNetwork来实现这一点的正确方法吗?您可以使用GoogleIPADR软件包来
ips = [...a list of around 1000 IPs]
cidr_list = ['192.168.10.0/24', '10.10.10.0/24', '192.168.3.0/24']
for ip in ips:
if ip in cidr_list: print ip
任何人都知道使用NetAddress的IPAddress和IPNetwork来实现这一点的正确方法吗?您可以使用Google
IPADR
软件包来实现这一点
pip install ipaddr
从命令行我不能说我以前使用过
netaddr
,但这有用吗
cidrs = map(IPNetwork,cidr_list)
ret = [i for i in ips if IPAddress(i) in cidrs]
我希望这对您有所帮助,即使它是在bash中,而不是在python中
#!/bin/bash
ip_address_list="192.168.10.1 192.168.3.2 10.10.10.111 192.168.100.1"
cider_list="192.168.10.0/24 10.10.10.0/24 192.168.3.0/26"
bin_ip=$(IFS="." ; for i in $ip; do echo "obase=2 ; $i"| bc; done| awk '{printf "%08d", $1}'| cut -c2-)
for cider in $cider_list ; do
network_prefix=$(echo $cider |cut -d"/" -f2)
network_addr=$(echo $cider |cut -d"/" -f1)
bin_ip=$(IFS="." ; for i in $ip; do echo "obase=2 ; $i"| bc; done| awk '{printf "%08d", $1}'| cut -c2-)
if [ $(cut -b 1-$network_prefix <<< $bin_ip) = $(cut -b 1-$network_prefix <<< $bin_network_addr) ]; then
echo "The IP address $ip is in $network_addr with a network prefix of $network_prefix"
fi
done
done
#/bin/bash
ip_地址_list=“192.168.10.1 192.168.3.2 10.10.10.111 192.168.100.1”
苹果酒列表=“192.168.10.0/2410.10.10.0/24192.168.3.0/26”
bin|u ip=$(如果在$ip中为i设置“.”;do echo“obase=2;$i”| bc;done | awk'{printf”%08d“,$1}'| cut-c2-)
对于$cider_列表中的苹果酒;做
网络前缀=$(回声$cider |切-d”/“-f2)
网络地址=$(回声$cider |切-d”/“-f1)
bin|u ip=$(如果在$ip中为i设置“.”;do echo“obase=2;$i”| bc;done | awk'{printf”%08d“,$1}'| cut-c2-)
如果[$(cut-b1-$network\u prefix,您可以使用NetAddress模块中的所有匹配cidrs方法。简单而准确
ips=[ips-if-len(netaddr.all\u-matching\u-cidrs(ip,子网\u-masks))中ip的ip=0]