]>
Tony Duckles's Git Repositories (git.nynim.org) - dotfiles.git/blob - bin/ipaddr
   2 # Usage: ipaddr [<iface>] 
   3 # Show the IP address (IPv4 and/or IPv6) for interface <iface> or all interfaces 
   4 # when no <iface> given. 
  10 # Helper function for converting a hex (or decimal) netmask into CIDR format 
  12 function mask2cdr(mask) { 
  13     if(mask ~ /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/) { 
  15         mask = sprintf("0x%x%x%x%x",d[1],d[2],d[3],d[4]); 
  20         digit=substr(mask,1,1); 
  22         if(digit ~ /f|F/) cidr += 4; 
  23         if(digit ~ /e|E/) cidr += 3; 
  24         if(digit ~ /c|C/) cidr += 2; 
  25         if(digit ~ /8/) cidr += 1; 
  32         test -n "$IFACE" && if_args
="$IFACE" 
  33         test -z "$if_args" && if_args
="-a" 
  34         ifconfig 
$if_args | $awk "$awk_mask2cdr"' 
  35             /^[a-z-0-9]/ {iface=$1}; 
  36             $1 == "inet" {printf("%-10s %s/%s\n",iface,$2,mask2cdr($4))}; 
  37             $1 == "inet6" && !/scopeid|inet6 ::1|temporary/ {printf("%-10s %s/%s\n",iface,$2,$4)}' 
  40         test -n "$IFACE" && if_args
="$IFACE" 
  41         test -z "$if_args" && if_args
="-a" 
  42         ifconfig 
$if_args | $awk "$awk_mask2cdr"' 
  44             $1 == "inet" { printf("%-10s %s/%s\n", iface ":", substr($2,6), mask2cdr(substr($0,index($0,"Mask:")+5))) }; 
  45             $1 == "inet6" && /Scope:Global/ { printf("%-10s%s\n", iface ":", $3) }' 
  48         test -x "/usr/gnu/bin/awk" && awk=/usr
/gnu
/bin
/awk 
  49         test -n "$IFACE" && if_args
="$IFACE" 
  50         test -z "$if_args" && if_args
="-a" 
  51         ifconfig 
$if_args | $awk "$awk_mask2cdr"' 
  52             /^[a-z0-9]+/ {iface=$1}; 
  53             $1 == "inet" { printf("%-10s %s/%s\n", iface, $2, mask2cdr($4)) }; 
  54             $1 == "inet6" && !/inet6 ::|inet6 fe80:/ { printf("%-10s %s\n", iface, $2) }' 
  57         echo "Unhandled host-type: $UNAME"