#!/bin/bash nets=() while IFS='\n' read -r net; do net=${net%/*} net4=$(ip -br -4 addr show to $net 2>/dev/null|awk '{print $1}'|tr '\n' ','|sed 's/,$//') [[ -n $net4 ]] && nets+=("$net4 = $net;") done <<< $(ip -br -4 addr|awk '/^(br|bond|eth|wg)[0-9]+(\.[0-9]+)?/ {print $3}'|uniq -d) while IFS='\n' read -r net; do net=${net%/*} net6=$(ip -br -6 addr show to $net 2>/dev/null|awk '{print $1}'|tr '\n' ','|sed 's/,$//') [[ -n $net6 ]] && nets+=("$net6 = $net;") done <<< $(ip -br -6 addr|awk '/^(br|bond|eth|wg)[0-9]+(\.[0-9]+)?/ && $3 !~ "^fe80" {print $3}'|uniq -d) [[ -n $nets ]] && echo "${nets[@]}"|sed 's/;$//'