]> git.nbdom.net Git - nb.git/commitdiff
sys_interfaces_all() new
authorNicolas Boisselier <nicolas.boisselier@gmail.com>
Tue, 18 Apr 2023 00:17:40 +0000 (02:17 +0200)
committerNicolas Boisselier <nicolas.boisselier@gmail.com>
Tue, 18 Apr 2023 00:17:40 +0000 (02:17 +0200)
etc/profile.d/sys.sh

index ec8d40b15dd31ce28a72a40ebf877d57f95a099f..1771046154b6086ed143549068dcfc72991527a7 100644 (file)
@@ -205,25 +205,18 @@ sys_interfaces() {
 }
 
 sys_interfaces_all() {
-(
-       if which ip > /dev/null; then
-               ip link | awk -F'(: )|@' '/^[^ ]/{print $2}'
-
-       elif which ifconfig > /dev/null; then
-               #ifconfig | awk '/^[^ ]/{print $1}'
-               ifconfig | awk '/^[a-z][^:]+: flags=[0-9]+<[A-Z]+,BROADCAST/{sub(":$","",$1);print $1}'
-
-       fi
-) | awk '!x[$0]++ && $1 !~ /^(lo)$/ {print}' | while read int; do
-
-       infos=$( (ip addr show "$int" || ifconfig "$int") 2> /dev/null )
-
-       mac=$(echo "$infos" | awk '/ether ([^ ]+)/{print $2}')
-       [ -z "$mac" ] && continue
-       ip=$(echo "$infos" | awk '/^[\t ]*inet /{sub("^[^0-9]*","",$2); sub("/[0-9]+","",$2); {print $2; exit; printf $2" "}}')
-
-       printf '%s\t%s\t%s\n' "$int" "$mac" "$ip"
-done
+       ip -d -j a | sed "s/ifindex/\nifindex/g" | awk '\
+BEGIN{i=0; j=0}\
+/"link_type":"loopback"/{next}\
+/"info_kind":"veth"/{next}\
+0{print $0; next}
+i!=j{print ""}\
+/"ifname":/{i++}\
+match($0, /"ifname":"([^"]+)"/, m) {printf "%s\t", m[1]}\
+match($0, /"address":"([^"]+)"/, m) {printf "%s\t", m[1]}\
+match($0, /"local":"([0-9\.]+)"/, m) {printf "%s", m[1]}\
+0{print "";print i}
+'
 }
 
 sys_ips() {