From abd83a5b91c00390300de40b8ada651212efe9a6 Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 14 Jan 2013 15:14:46 +0100 Subject: retiolum find_super: parallel lookup --- retiolum/scripts/adv_graphgen/find_super | 37 +++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 13 deletions(-) mode change 100644 => 100755 retiolum/scripts/adv_graphgen/find_super (limited to 'retiolum/scripts/adv_graphgen') diff --git a/retiolum/scripts/adv_graphgen/find_super b/retiolum/scripts/adv_graphgen/find_super old mode 100644 new mode 100755 index c89a94fb..e971e204 --- a/retiolum/scripts/adv_graphgen/find_super +++ b/retiolum/scripts/adv_graphgen/find_super @@ -1,14 +1,25 @@ -#!/bin/sh -cd /etc/tinc/retiolum/hosts -ls -1 . | while read fname; -do - for i in `sed -n 's/Address\s*=\s*\(.*\)/\1/p' $fname`;do - if nc -zw 5 $i 655 2>/dev/null; then - echo "$fname - $i reachable" - #else - #echo -n - #echo "$fname - $i unreachable" +#! /bin/dash +set -euf +case "${1-all}" in + (all) + find /etc/tinc/retiolum/hosts -type f | + xargs -P 423 -n 1 "$0" one + ;; + (one) + hosts_file=$2 + name=$(basename $hosts_file) - fi - done -done + if grep -q Address $hosts_file; then + script="$(sed -n ' + s/[[:space:]]*//g + s/^\(Address\|Port\)=\(.*\)/\1="${\1+$\1 }\2"/p + ' $hosts_file)" + eval "$script" + for address in ${Address-}; do + if nc -zw 2 $address 655 2>/dev/null; then + echo $name - $address reachable + fi & + done + wait + fi +esac -- cgit v1.2.3 From 3b6a2e967d075145613faffa63ea9399fb6f1800 Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 14 Jan 2013 16:05:20 +0100 Subject: retiolum find_super: replace xargs with for&wait --- retiolum/scripts/adv_graphgen/find_super | 44 +++++++++++++++----------------- 1 file changed, 20 insertions(+), 24 deletions(-) (limited to 'retiolum/scripts/adv_graphgen') diff --git a/retiolum/scripts/adv_graphgen/find_super b/retiolum/scripts/adv_graphgen/find_super index e971e204..17a0c8c0 100755 --- a/retiolum/scripts/adv_graphgen/find_super +++ b/retiolum/scripts/adv_graphgen/find_super @@ -1,25 +1,21 @@ #! /bin/dash -set -euf -case "${1-all}" in - (all) - find /etc/tinc/retiolum/hosts -type f | - xargs -P 423 -n 1 "$0" one - ;; - (one) - hosts_file=$2 - name=$(basename $hosts_file) - - if grep -q Address $hosts_file; then - script="$(sed -n ' - s/[[:space:]]*//g - s/^\(Address\|Port\)=\(.*\)/\1="${\1+$\1 }\2"/p - ' $hosts_file)" - eval "$script" - for address in ${Address-}; do - if nc -zw 2 $address 655 2>/dev/null; then - echo $name - $address reachable - fi & - done - wait - fi -esac +set -eu +cd /etc/tinc/retiolum/hosts +for name in ` + grep '^[[:space:]]*Address[[:space:]]*=' * | + cut -d: -f1 | sort | uniq +`; do + if eval "`sed -n ' + s/[[:space:]]\+//g + s/^\(Address\|Port\)=\(.*\)/\1="\${\1+\$\1\n}\2"/p + ' $name`"; then + port=${Port-655} + for host in $Address; do + if nc -zw 2 $host $port 2>/dev/null; then + echo $name - $host reachable + fi & + done + wait + fi & +done +wait -- cgit v1.2.3 From bce6236eb787c047cfee496640533676d6dfeb45 Mon Sep 17 00:00:00 2001 From: tv Date: Mon, 14 Jan 2013 16:06:08 +0100 Subject: retiolum find_super: use same output format as find_super.py --- retiolum/scripts/adv_graphgen/find_super | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'retiolum/scripts/adv_graphgen') diff --git a/retiolum/scripts/adv_graphgen/find_super b/retiolum/scripts/adv_graphgen/find_super index 17a0c8c0..2c316d0e 100755 --- a/retiolum/scripts/adv_graphgen/find_super +++ b/retiolum/scripts/adv_graphgen/find_super @@ -12,7 +12,7 @@ for name in ` port=${Port-655} for host in $Address; do if nc -zw 2 $host $port 2>/dev/null; then - echo $name - $host reachable + echo "$name [('$host', $port)]" fi & done wait -- cgit v1.2.3