Comando do terminal para mostrar as interfaces de rede que NÃO estão CONECTADAS

1
  • Usando o modo terminal Eu quero exibir as interfaces de rede atuais que NÃO estão CONECTADAS no meu computador.

  • Eu usei ifconfig para encontrar as interfaces conectadas junto com seu endereço IP, mas não consigo descobrir como exibir apenas aquelas que NÃO ESTÃO CONECTADAS.

por nismoasfuh 06.04.2018 / 21:01

4 respostas

1

Você pode apenas fazer:

$ ip link show

para uma lista de interfaces, incluindo seu status. Você pode filtrar resultados para dispositivos que não estão em uso canalizando grep DOWN após o comando ip :

$ ip link show | grep DOWN
    
por 06.04.2018 / 21:11
1
ip link show |
awk '/^[1-9]/ && $0 !~ "LOWER_UP" { inf=$2; sub(":","",inf); print inf; }' |
while read iface; do
    [[ $(readlink /sys/class/net/$iface) =~ devices/virtual ]] || echo $iface
done

A primeira parte ( ip link show | awk ) obtém todas as interfaces para as quais o driver L2 reporta que estão conectadas. A segunda parte descarta todas as interfaces virtuais porque "não conectado" não significa muito para elas.

    
por 06.04.2018 / 21:56
1

Você pode verificar o estado da interface de rede do arquivo /sys/class/net/$interface/carrier . ( 1 = connetcted, 0 = desconectado)

Para obter a interface de rede desconectada:

for i in $( ls /sys/class/net ); 
do 
if grep -q 0 /sys/class/net/$i/carrier; then
echo $i; 
fi
done
    
por 06.04.2018 / 22:46
0

Usando ifconfig (porque esse é o comando que você disse que sabe usar) e bash com diff e sed :

diff <( ifconfig ) <( ifconfig -a ) | sed -nE 's/^> ([^[:blank:]]+).*//p'

Isso compara a saída de ifconfig com a de ifconfig -a . A partir dessa saída, qualquer linha que comece com > (significando que elas estão apenas na saída ifconfig -a ) estará relacionada a interfaces que não são "UP". A expressão sed analisa os nomes das interfaces.

O resultado será uma lista de interfaces que não estão atualizadas.

A expressão sed s/^> ([^[:blank:]]+).*//p :

Esta é uma substituição. Ele corresponderá a qualquer linha que comece com > seguido por um espaço. Depois disso, ele irá capturar qualquer string não vazia de caracteres. Isso, com o restante da linha, é substituído pela seqüência capturada de caracteres não em branco e o resultado é impresso. As únicas linhas que correspondem à expressão regular na saída de diff são linhas que mencionam o nome da interface no início da linha após > e espaço.

    
por 06.04.2018 / 21:18