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
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.
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
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.
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
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.
Tags networking linux terminal