finalmente encontrou a solução baseada em ifconfig!
String s="ifconfig | awk -F '[ :]' '/encap|inet addr/{ if($1 != \"\" ){ print $1 \":\" $13 } else print $13 }'| awk -F \":\" '{print $1}'| awk '{ curr=$1 ; if(!system(\"echo \"$1\"|grep ^[0-9]>/dev/null\")) {print prev \"\t : \" curr;prev=\"\"} else { if(prev!=\"\") {print prev \"\t : not assigned\" }; prev=$1 } }'"
explicação:
root$ ifconfig | awk -F '[ :]' '/encap|inet addr/{ if($1 != "" ){ print $1 ":" $13 } else print $13 }'| awk -F ":" '{print $1}'
eth0
lo
127.0.0.1
vmnet1
192.168.139.1
vmnet8
192.168.152.1
wlan0
10.208.7.86
Então, eu canalizei a saída acima para outro comando awk:
| awk '{ curr=$1 ; if(!system("echo "$1"|grep ^[0-9]>/dev/null")) {print prev "\t : " curr;prev=""} else { if(prev!="") {print prev "\t : not assigned" }; prev=$1 } }'
aqui, se eu encontrar dois nomes de interface consecutivos, então eu imprimo o nome da interface anterior com o comando customizado não atribuído ".se eu obtenho um padrão numérico string then current string (ipaddress) junto com o prev nome da interface ious é impresso!