[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Sheflug] quick bash question
On 30 January 2011 12:04, Ted Harding <ted.harding@xxxxxxxxxxxx> wrote:
> On 29-Jan-11 20:10:19, Christopher Brown wrote:
>> Hi folks,
>> I'm trying to run various rDNS (PTR) lookups from command line.
>> My shell-foo is very poor. Can someone help?
>>
>> I know the hostname I want to lookup - e.g. mail.lug.org.uk and
>> want to get the PTR record in one line and the shortest number
>> of key-strokes as possible.
>>
>> I can get the IP in one command:
>>
>> host mail.lug.org.uk
>>
>> and get the PTR record in another:
>>
>> dig -x 217.147.93.68
>>
>> but have no idea how to combine the two or pipe output from the first
>> to the second. I can probably get it in a single command but would be
>> interested in the solution anyway.
>>
>> Thanks
>> Chris
>
> I'm not sure exactly what you want to do, but the following
> does what I think you mean!
>
> host mail.lug.org.uk | dig -x `awk '{print $4}'` | grep PTR | awk
> '{if($5){print $5}}' | sed 's/\.$//'
>
> Result:
> -------
> web-01.lug.org.uk
>
>
> Explanation:
> [1] host mail.lug.org.uk
> produces
> mail.lug.org.uk has address 217.147.93.68
>
> of which the 4th field it the IP address you want.
>
> [2] host mail.lug.org.uk | awk '{print $4}'
> produces that 4th field:
> 217.147.93.68
>
> [3] When you enclose the "awk '{print $4}'" in
> backquotes in a command, as in
> dig -x `awk '{print $4}'`
> this has the effect of substituting the output of
> "awk '{print $4}'" for the back-quoted bit, so the
> effect is the same as
> dig -x 217.147.93.68
>
> [4] Now that last command produces several lines of output,
> of which two contain "PTR":
> ;68.93.147.217.in-addr.arpa. IN PTR
> 68.93.147.217.in-addr.arpa. 9924 IN PTR web-01.lug.org.uk.
>
> You want the 5th field "web-01.lug.org.uk." from the one which
> has 5 fields. So a further call to 'awk' picks out the one
> in which $5 is non-null, and outputs $5:
> awk '{if($5){print $5}}'
>
> [5] The result of that is "web-01.lug.org.uk.", but I guess
> you do not want the final ".", so get rid of it:
>
> sed 's/\.$//'
>
> I.e. if there is a "." in final position, replace it with null
> (the "." needs to be escaped as "\." since on its own "." is
> a wildcard).
>
> Hoping that helps!
> Ted.
Ted - That's exactly the result but was hoping for something a bit
easier to remember.
Basically something that just produces the FQDN (yes, without the
trailing period symbol if possible)
Sorry for the delay in responding - have been away for a week.
Thanks for all the responses so far!
--
Christopher Brown
_______________________________________________
Sheffield Linux User's Group
http://sheflug.org.uk/mailman/listinfo/sheflug_sheflug.org.uk
FAQ at: http://www.sheflug.org.uk/mailfaq.html
GNU - The Choice of a Complete Generation