[CentOS] Help with at Bash script
Tony Schreiner
anthony.schreiner at bc.edu
Tue Dec 2 19:47:35 UTC 2014
On Tue, Dec 2, 2014 at 2:19 PM, Alexander Dalloz <ad+lists at uni-x.org> wrote:
> Am 02.12.2014 um 19:05 schrieb James B. Byrne:
>
>> I am attempting to get a script borrowed from DJB to work on my CentOS-6.6
>> box. Simplified it looks like this:
>>
>> tcpdump -l -n -e port 53 \
>> | awk '{if ($14 ~ /A.*?/) print $15}' \
>> | while read domain ; do echo $domain ; done ;
>>
>> The sticking point is the 'while read' construct. Run just as 'tcpdum |
>> awk'
>> I get this:
>>
>> english.stackexchange.com.
>> www.urbandictionary.com.
>> www.urbandictionary.com.
>> www.urbandictionary.com.
>> www.urbandictionary.com.
>> api.mywot.com.
>> a.udimg.com.
>> a.udimg.com.
>> fonts.googleapis.com.
>> . . .
>>
>> Run with the 'while read $domain ; do echo ' pipe nothing appears
>> whatsoever.
>> What am I doing wrong?
>>
>
> while read domain; do
> echo ${domain}
> done < <(tcpdump -l -n -e port 53 | awk '{if ($14 ~ /A.*?/) print $15}')
>
> The "echo ${domain}" part is certainly just a simplification of a more
> complex command to run on the variable. Else it would be pointless as awk
> is printing out the domain field 15.
>
> Alexander
>
If not a typo in the message, your mistake, and I do it all the time, is
using
while read $domain
instead of
while read domain
Tony
More information about the CentOS
mailing list