[PATCH] nodewatcher: Add support for layer 3 neighbors
robert
rlanghammer at web.de
Mi Sep 11 21:22:45 CEST 2019
Hallo,
ich bevorzuge das awk von Fabian.
Gruss Robert
Am 08.09.19 um 15:34 schrieb Fabian Bläse:
> Hallo Adrian,
>
> On 08.09.19 13:49, Adrian Schmutzler wrote:
>> diff --git a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
>> index 09f6843d..c9044fe8 100755
>> --- a/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
>> +++ b/src/packages/fff/fff-nodewatcher/files/usr/sbin/nodewatcher
>> @@ -12,7 +12,7 @@ if ! lock -n "$lockfile"; then
>> fi
>> trap "lock -u \"$lockfile\"" INT TERM EXIT
>>
>> -SCRIPT_VERSION="54"
>> +SCRIPT_VERSION="55"
>>
>> #Get the configuration from the uci configuration file
>> #If it does not exists, then get it from a normal bash file with variables.
>> @@ -291,6 +291,16 @@ crawl() {
>> DATA=$DATA"<batman_adv_originators>$batman_adv_originators</batman_adv_originators>"
>> DATA=$DATA"<batman_adv_gateway_mode>$batman_adv_gateway_mode</batman_adv_gateway_mode>"
>> DATA=$DATA"<batman_adv_gateway_list>$batman_adv_gateway_list</batman_adv_gateway_list>"
>> +
>> + if [ -s /etc/config/babeld ]; then
>> + BABELS="$(echo dump | nc ::1 33123 | grep '^add neighbour' |
>> + awk -v RS='\n' \
>> + '{r = gensub(/.*add neighbour.*address ([0-9a-fA-F:]*) +if +([^ ]+).* cost +([0-9.]+).*/, \
>> + "<neighbour><ip>\\1</ip><outgoing_interface>\\2</outgoing_interface><link_cost>\\3</link_cost></neighbour>", "g"); print r;}')"
> 'printf "%s", r' statt 'print r' verwenden? Dann kommt da kein '\n' mitten ins XML.
>
> Verrückt, was da für ein foo raus kommt, wenn man so simple Dinge in Shell parsen möchte.. Man müsste das irgendwie geschickt in eine Map (String -> Value) verwandeln.. Ich hab mich da mal an etwas awk versucht:
>> awk '{ for (i=2; i < NF; i += 2) { vars[$i] = $(i+1) }} { printf "%s" vars["cost"] }'
> bzw. insgesamt dann
>> awk '{ for (i=2; i < NF; i += 2) { vars[$i] = $(i+1) }} \
>> { printf "<neighbour><ip>%s</ip><outgoing_interface>%s</outgoing_interface><link_cost>%s</link_cost></neighbour>\n", vars["address"], vars["if"], vars["cost"] }'
> Was hältst du davon?
>
> Gruß
> Fabian
>
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname : signature.asc
Dateityp : application/pgp-signature
Dateigröße : 833 bytes
Beschreibung: OpenPGP digital signature
URL : <https://lists.freifunk.net/pipermail/franken-dev-freifunk.net/attachments/20190911/f55d3be2/attachment.sig>
Mehr Informationen über die Mailingliste franken-dev