1 From 47b9ac59c715827252ae6e6732903c3dabb697fb Mon Sep 17 00:00:00 2001
2 From: Joachim Zobel <jz-2014@heute-morgen.de>
3 Date: Mon, 23 Feb 2015 21:38:11 +0000
4 Subject: [PATCH 53/55] Log parsing utils in contrib/reverse-dns
7 contrib/reverse-dns/README | 18 ++++++++++++++++++
8 contrib/reverse-dns/reverse_dns.sh | 29 +++++++++++++++++++++++++++++
9 contrib/reverse-dns/reverse_replace.sh | 28 ++++++++++++++++++++++++++++
10 3 files changed, 75 insertions(+)
11 create mode 100644 contrib/reverse-dns/README
12 create mode 100644 contrib/reverse-dns/reverse_dns.sh
13 create mode 100644 contrib/reverse-dns/reverse_replace.sh
15 diff --git a/contrib/reverse-dns/README b/contrib/reverse-dns/README
17 index 000000000000..f87eb77c4c22
19 +++ b/contrib/reverse-dns/README
23 +To translate my routers netstat-nat output into names that actually talk
24 +to me I have started writing to simple shell scripts. They require
27 +log-facility=/var/log/dnsmasq.log
31 +netstat-nat -n -4 | reverse_replace.sh
33 +I get retranslated output.
39 diff --git a/contrib/reverse-dns/reverse_dns.sh b/contrib/reverse-dns/reverse_dns.sh
41 index 000000000000..c0fff300a947
43 +++ b/contrib/reverse-dns/reverse_dns.sh
46 +# $Id: reverse_dns.sh 4 2015-02-17 20:14:59Z jo $
48 +# Usage: reverse_dns.sh IP
49 +# Uses the dnsmasq query log to lookup the name
50 +# that was last queried to return the given IP.
54 +qmIP=`echo $IP | sed 's#\.#\\.#g'`
55 +LOG=/var/log/dnsmasq.log
57 +IP_regex='^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$'
59 +if ! [[ $IP =~ $IP_regex ]]; then
65 + grep " is $IP" | head -1 | \
66 + sed "s#.* \([^ ]*\) is $qmIP.*#\1#" `
68 +if [ -z "$NAME" ]; then
74 diff --git a/contrib/reverse-dns/reverse_replace.sh b/contrib/reverse-dns/reverse_replace.sh
76 index 000000000000..a11c164b7f19
78 +++ b/contrib/reverse-dns/reverse_replace.sh
81 +# $Id: reverse_replace.sh 4 2015-02-17 20:14:59Z jo $
83 +# Usage e.g.: netstat -n -4 | reverse_replace.sh
84 +# Parses stdin for IP4 addresses and replaces them
85 +# with names retrieved by reverse_dns.sh
88 +DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
89 +DNS=$DIR/reverse_dns.sh
92 +IP_regex='[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'
95 + if grep --quiet $IP_regex <<< "$LINE"; then
96 + IPs=`sed "s#.*\b\($IP_regex\)\b.*#\1 #g" <<< "$LINE"`
98 + for IP in "${IPs[@]}"
101 + # echo "$NAME is $IP";
102 + LINE="${LINE/$IP/$NAME}"