diff options
author | Your Name <you@example.com> | 2013-02-05 12:29:45 +0000 |
---|---|---|
committer | Your Name <you@example.com> | 2013-02-05 12:29:45 +0000 |
commit | c5bd7df1ba5839e1a5a018381a109025d7bb3c6a (patch) | |
tree | ddee180f43a9300c2be09e6676f781e8f0462a4b /retiolum/bin | |
parent | b55bb65e05f6645d87470b94ef56ec0c3d6c160d (diff) | |
parent | 5b87cdd1f83e8191f01ac9e9c3441e2a47874a20 (diff) |
Merge branch 'master' of https://github.com/krebscode/painload
Diffstat (limited to 'retiolum/bin')
-rwxr-xr-x | retiolum/bin/list-known-public-addresses | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/retiolum/bin/list-known-public-addresses b/retiolum/bin/list-known-public-addresses new file mode 100755 index 00000000..21b1c389 --- /dev/null +++ b/retiolum/bin/list-known-public-addresses @@ -0,0 +1,38 @@ +#! /bin/sh +# +# printf '%s %s\n' hostname IP-address for each known public retiolum address +# +set -eu + +_list_hostname_address() { + cd /etc/tinc/retiolum/hosts + grep --with-filename '^Address' * | + sed -n ' + s/: */ / + s/ *= */ / + s/ Address \([a-zA-Z0-9.:_]*\) \?.*/ \1/p' +} +_lookup_address() { + sed ' + /:/!{/ [0-9.]*$/!{s/ / `dig +short /;s/$/` \&/}} + s/^/echo / + $s/$/\nwait/ + ' | sh +} +_filter_public() { + sed ' + # drop private IPv4 addresses + / 10\./d + / 172\.\(1[6-9]\|2[0-9]\|3[01]\)\./d + / 192\.168\./d + # TODO drop private IPv6 addresses + ' +} +_filter_online() { + awk ' + {print"nc -zw 2 "$2" 655 2>/dev/null && echo "$1" "$2" &"} + END {print"wait"} + ' | sh +} + +_list_hostname_address | _lookup_address | _filter_public |