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 | 
