Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用grepcidr/bash进行IP过滤_Bash - Fatal编程技术网

使用grepcidr/bash进行IP过滤

使用grepcidr/bash进行IP过滤,bash,Bash,正在尝试筛选IP列表并从列表“服务IP列表”中拒绝IP 出于某种奇怪的原因,grepcidr只在“service_IP_list”列表的前3个IP中搜索,而忽略了其余的IP,有人知道如何解决这个问题吗 ip_filtering() { service_ip_list=("192.168.1.1" "192.168.1.2" "192.168.1.8" "192.168.1.80" "192.168.1.20" "192.168.1.200") grepcidr "$service_ip_

正在尝试筛选IP列表并从列表“服务IP列表”中拒绝IP 出于某种奇怪的原因,grepcidr只在“service_IP_list”列表的前3个IP中搜索,而忽略了其余的IP,有人知道如何解决这个问题吗

ip_filtering() { service_ip_list=("192.168.1.1" "192.168.1.2" "192.168.1.8" "192.168.1.80" "192.168.1.20" "192.168.1.200")
    grepcidr "$service_ip_list" <(echo "$1") >/dev/null && \
        echo "$1 is a Service IP" || \
        echo $1 >> live_ser_list
}

for i in 192.168.1.{1..254}
 do
 ip_filtering $i & disown
 done
ip_筛选(){service_ip_list=(“192.168.1.1”“192.168.1.2”“192.168.1.8”“192.168.1.80”“192.168.1.20”“192.168.1.200”)
grepcidr“$service\u ip\u list”/dev/null&&\
echo“$1是一个服务IP”||\
echo$1>>实时服务列表
}
对于192.168.1中的i{1..254}
做
ip_过滤$i和拒绝
完成

它不是grepcidr,如果网络列表中的ip匹配,例如10.0.0.0/24,您可以使用/需要grepcidr, 但如果需要通过拒绝阵列中的IP来过滤IP,简单的解决方案是:

    #your array
    declare -a service_ip_list=("192.168.1.1" "192.168.1.2" "192.168.1.8" "192.168.1.80" "192.168.1.20" "192.168.1.200")
    ip_filtering () {
    #this will match your IP to the IP's from the array    
    if [[ " ${service_ip_list[@]} " =~ " ${1} " ]]; then
        #if found in array
        echo "$1 is a Service IP"
    else
        #if not found in array
        echo $1 >> live_ser_list
    fi
    }
    # your IP source
    for i in 192.168.1.{1..254}
     do
     ip_filtering $i & disown
     done

我假设您使用数组元素作为
“${service_ip_list[@]}”
,但在您的示例中,您只是在变量contextno中使用它,如果我这样做,它会给我:192.168.1.2:没有这样的文件或目录等等,对于每个IPI,我认为它是可以理解的,我的意思是像
不,它不工作,grepcidr希望IP位于一个文件中,而不仅仅接受一个参数,使用