dimanche 13 septembre 2020

Understanding IN - Statement in Linux bash

I have the problem to understand the in statement in bash... First of all heres the code:

#! /bin/bash

dns=()
while read line; do
  up=$(nslookup $line | awk -F ': ' 'NR==6 {print $2} ')
  dns+=($up)
done < dns.blacklist.txt.txt

awk '{if( $1 in dns ) print $1 " Blacklisted"; else print $1}' thttpd2.log 

So thttp2.log is just a list of ips, while nslookup is getting the ip of hostnames (for blacklist puposes). So now I want to check if the IP that connected in the log, was on the blacklist, in the code in the dns array.

All Ips and Lookups from ns are good: Dns=81.169.145.82 192.0.3.45 and awk $1=81.169.145.82 So how can I check in the awk statement at the lower part, if $1 is in dns?

I've been trying for half a day now... I am pretty sure I have not understood "in" so can someone please give me at least a tip?

PS: Current result is just: 81.169.145.82

81.169.145.82

81.169.145.82

192.0.3.45

Goal:

81.169.145.82 Blacklisted

81.169.145.82 Blacklisted

81.169.145.82 Blacklisted

192.0.3.45

Aucun commentaire:

Enregistrer un commentaire