Existe uma maneira de percorrer todos os tipos disponíveis e mostrar todas as interfaces por tipo (usando ip link show type <type>
). A partir disso, é possível coletar as interfaces para todos os tipos e depois analisar a interface que se deseja conhecer. Não é elegante, mas funciona:
Usando o bash:
#!/bin/bash
# Arguments: $1: Interface ('grep'-regexp).
# Static list of types (from 'ip link help'):
TYPES=(bond bond_slave bridge dummy gre gretap ifb ip6gre ip6gretap ip6tnl ipip ipoib ipvlan macvlan macvtap nlmon sit vcan veth vlan vti vxlan)
iface="$1"
for type in "${TYPES[@]}"; do
ip link show type "${type}" | grep -E '^[0-9]+:' | cut -d ':' -f 2 | sed 's|^[[:space:]]*||' | while read _if; do
echo "${_if}:${type}"
done | grep "^${iface}"
done
Salve isso em um arquivo, torne-o executável e execute-o com sua interface que você deseja conhecer como argumento.
Para o exemplo de dum0.200
beeing do tipo vlan
sobre o link eth0
(criado com ip link add link eth0 name dum0.200 type vlan protocol 802.1Q id 200
), a saída seria dum0.200@eth0:vlan
, indicando que é do tipo vlan
. Observe que o @eth0
vem de ip link show
e pode ser analisado se alguém desejar.
Como o argumento para este script é interpretado como grep
-regexp, especificando nada lista tudo o que ip link show type <type>
produz, ou especificando apenas um prefixo lista alguns, etc.