Por padrão, ifconfig
irá me mostrar todas as interfaces disponíveis, mas e se eu apenas quiser exibir active
outras? Como, en0
apenas abaixo.
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
ether 14:10:9f:e0:eb:c9
inet6 fe80::1610:9fff:fee0:ebc9%en0 prefixlen 64 scopeid 0x4
inet X.X.X.X netmask 0xffffff00 broadcast 101.6.69.255
nd6 options=1<PERFORMNUD>
media: autoselect
**status: active**
en3: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=60<TSO4,TSO6>
ether 32:00:14:e7:4f:80
media: autoselect <full-duplex>
**status: inactive**
Aviso ifconfig en0
não vai satisfazer, en0
nem sempre é o ativo;)
Estou executando o Mac OS X.
command-line
networking
osx
interface
qweruiop
fonte
fonte
ifconfig
implementações variam. Além disso, por que o uso éifconfig
um requisito? Qual é o seu objetivo final?Respostas:
Para obter uma descrição completa de todos os serviços ativos, tente:
Esse regex simples deve filtrar apenas interfaces ativas e todas as suas informações. Sugiro que você coloque um alias para isso no seu arquivo ~ / .profile ou ~ / .bash_profile (talvez esteja ativo?)
Para obter apenas o nome da interface (útil para scripts), use:
Você precisa instalar o pcregrep para que isso funcione. Está na MacPorts no pacote pcre. Como alternativa, isso deve funcionar com o GNU grep usando em
grep -Pzo
vez de,pcregrep -M -o
mas com o restante, mas não testei isso.fonte
Se você quiser apenas imprimir a “entrada” se ela contiver
status: active
, poderá usar algo como este programa awk como um filtro para a saída ifconfig :Quando cada “entrada” iniciar (uma linha está vazia ou não inicia com uma guia), comece a salvar a entrada em um buffer. Anexe a este buffer quaisquer linhas subsequentes que iniciem com uma guia. Preste atenção na corda mágica
status: active
; se uma linha como essa foi vista, imprima o buffer (a “entrada anterior”) quando uma nova “entrada” iniciar (ou a entrada terminar).Salve o texto do programa acima em um arquivo e use-o assim:
Ou, se você for
chmod +x
o arquivo, poderá simplificá-lo um pouco:fonte
Se você não é adverso a alguns scripts de bash, pode fazer o seguinte:
Isso listará as interfaces de rede ativas. Testado no Mac OS X 10.13.
O bom é que você não precisa instalar nada. Basta executar o acima em um terminal.
fonte
ifconfig -lu
, não funcionará no debian. Mas a OP está usando o MacOS de qualquer maneira, portanto, essa solução funcionaria em sistemas com BSDsifconfig
. Eu postei outra resposta abaixo, que faz o mesmo sem usarifconfig -lu
Lendo seus comentários e perguntas, parece que você realmente deseja obter apenas as interfaces que possuem um endereço IP atribuído a elas.
Você pode fazer isso rapidamente com
ifconfig
egrep
.Executando o comando:
Deve produzir algo semelhante a:
Isso mostraria cada linha com um nome de interface e IP e se eles tivessem um.
Algumas mágicas mais específicas do REGEX podem fornecer exatamente o que você precisa.
fonte
active
consideração?Eu gostaria que a pergunta fosse um pouco mais clara. Assumindo que
Active interface only
, você pretendia mostrar apenas o nome das interfaces ativas (no meu casoUP
eRUNNING
statusactive
) sem outros detalhes. Então tente o seguinte:A saída seria semelhante a:
Ajuste o
grep -v
campo e adicione mais interfaces indesejadas, comoloopback
->lo
etc, se necessário.Agora, se você quiser e precisaria verificar se as interfaces encontradas estão ativas no momento. Então podemos simplesmente passá-los como argumento para o exemplo
ifconfig <interface>
abaixo:[[ $(ifconfig en0 | grep -w active) ]] && echo "en0 is active"
Simplificando ainda mais e implementando-o em uma função:
A execução desta função retornará apenas as interfaces ativas. No meu caso:
fonte
A seguir serão impressos apenas as interfaces configuradas para ter um IP
fonte
Obtenha apenas o MAC da interface ATIVA:
fonte
ip
por padrão; você precisa do HomeBrew para isso e executebrew install iproute2mac
uma vez. O código fonte está em github.com/brona/iproute2macComo funciona:
fonte
Isso mostrará o status da conexão ethernet en0
fonte