]> git.ipfire.org Git - ipfire-2.x.git/blob - src/patches/dnsmasq/0053-Log-parsing-utils-in-contrib-reverse-dns.patch
Merge remote-tracking branch 'mfischer/dhcpcd' into next
[ipfire-2.x.git] / src / patches / dnsmasq / 0053-Log-parsing-utils-in-contrib-reverse-dns.patch
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
5
6 ---
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
14
15 diff --git a/contrib/reverse-dns/README b/contrib/reverse-dns/README
16 new file mode 100644
17 index 000000000000..f87eb77c4c22
18 --- /dev/null
19 +++ b/contrib/reverse-dns/README
20 @@ -0,0 +1,18 @@
21 +Hi.
22 +
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
25 +
26 +log-queries
27 +log-facility=/var/log/dnsmasq.log
28 +
29 +to be set. With
30 +
31 +netstat-nat -n -4 | reverse_replace.sh
32 +
33 +I get retranslated output.
34 +
35 +Sincerely,
36 +Joachim
37 +
38 +
39 diff --git a/contrib/reverse-dns/reverse_dns.sh b/contrib/reverse-dns/reverse_dns.sh
40 new file mode 100644
41 index 000000000000..c0fff300a947
42 --- /dev/null
43 +++ b/contrib/reverse-dns/reverse_dns.sh
44 @@ -0,0 +1,29 @@
45 +#!/bin/bash
46 +# $Id: reverse_dns.sh 4 2015-02-17 20:14:59Z jo $
47 +#
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.
51 +#
52 +
53 +IP=$1
54 +qmIP=`echo $IP | sed 's#\.#\\.#g'`
55 +LOG=/var/log/dnsmasq.log
56 +
57 +IP_regex='^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$'
58 +
59 +if ! [[ $IP =~ $IP_regex ]]; then
60 + echo -n $IP
61 + exit
62 +fi
63 +
64 +NAME=`tac $LOG | \
65 + grep " is $IP" | head -1 | \
66 + sed "s#.* \([^ ]*\) is $qmIP.*#\1#" `
67 +
68 +if [ -z "$NAME" ]; then
69 + echo -n $IP
70 +else
71 + echo -n $NAME
72 +fi
73 +
74 diff --git a/contrib/reverse-dns/reverse_replace.sh b/contrib/reverse-dns/reverse_replace.sh
75 new file mode 100644
76 index 000000000000..a11c164b7f19
77 --- /dev/null
78 +++ b/contrib/reverse-dns/reverse_replace.sh
79 @@ -0,0 +1,28 @@
80 +#!/bin/bash
81 +# $Id: reverse_replace.sh 4 2015-02-17 20:14:59Z jo $
82 +#
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
86 +#
87 +
88 +DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
89 +DNS=$DIR/reverse_dns.sh
90 +
91 +# sed regex
92 +IP_regex='[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'
93 +
94 +while read LINE; do
95 + if grep --quiet $IP_regex <<< "$LINE"; then
96 + IPs=`sed "s#.*\b\($IP_regex\)\b.*#\1 #g" <<< "$LINE"`
97 + IPs=($IPs)
98 + for IP in "${IPs[@]}"
99 + do
100 + NAME=`$DNS $IP`
101 + # echo "$NAME is $IP";
102 + LINE="${LINE/$IP/$NAME}"
103 + done
104 + fi
105 + echo $LINE
106 +done < /dev/stdin
107 +
108 --
109 2.1.0
110