diff options
author | makefu <root@pigstarter.de> | 2013-02-08 10:11:01 +0000 |
---|---|---|
committer | makefu <root@pigstarter.de> | 2013-02-08 10:11:01 +0000 |
commit | 194e1622b0b901780ceea40ea9c453c573b69995 (patch) | |
tree | dc6a3c82a744733d5ce926759b7d9f0a40473d29 /retiolum/bin | |
parent | 59ccc0fd871c4bbd12066f2f6aacf835a839885d (diff) | |
parent | dd6ad821a5a5bcb633b28a6d35e5e612d1f59094 (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 |