linux / solaris + verificar endereço IP válido duplicado do arquivo

1

qual a melhor maneira de encontrar o IP duplicado do arquivo (eu tenho o script ksh neste script eu preciso escrever uma função que verifique se há IP duplicado)

por exemplo, se o IP - 192.1926.23.52 existir duas vezes no arquivo - config_IP.txt então precisa imprimir "IP duplicado - xxx.xxx.xxx.xxx"

  • a solução pode ser com ksh ou perl one liner, sed, awk etc

o formato do arquivo deve ser o seguinte:

mais config_IP.txt

 # NETWORK adminstration


 192.192.23.150 192.192.23.120
 192.192.23.152 192.192.23.52      
 192.192.23.153 192.192.23.53      
 192.192.23.154 192.192.23.54      


 #NETWORK private

 192.192.23.170  192.192.23.122         
 192.192.23.172  192.192.23.126  
 192.192.23.174  192.192.23.123     
 192.192.23.177  192.192.23.121  



# NETWORK oracle internal


152.3.4.12 152.3.4.12 
152.3.4.14 152.3.4.16 


# NETWORK oracle ext

152.3.4.10 152.3.4.19 
    
por yael 03.01.2013 / 11:20

3 respostas

0

Algo parecido com isto (supondo que você queira verificar o IP em relação ao arquivo inteiro, não apenas contra o presente na mesma linha):

awk '/^[0-9]/{for(i=1;i<=NF;i++)if(a[$i]++==1) print "Duplicate IP : ",$i;}' file
    
por 03.01.2013 / 11:41
2

Não sei se entendi a pergunta corretamente, mas se você quiser encontrar IPs duplicados em um arquivo como o acima, basta colocar um IP por linha e executá-lo por sort e, em seguida, uniq -c , que será relate a contagem de linhas idênticas antes de cada uma:

cat config_IP.txt | sed "s/\s\s*/\n/g" | sort | uniq -c

Se você quiser verificar outros IPs contra o arquivo, basta agrupá-lo com o cat :

( cat config_IP.txt; echo "12.34.56.78 90.101.121.131" ) \
    | sed "s/\s\s*/\n/g" | sort | uniq -c

Você também pode adicionar um pouco de grep para filtrar as linhas que não contêm endereços IP antes de iniciar a classificação.

    
por 03.01.2013 / 11:57
0

tente isto:

cat config_IP.txt|egrep -v '^#|^$'|awk '{if($1==$2){print "Duplicate IP - "$1}}'
    
por 03.01.2013 / 11:30