Par défaut ifconfig
, toutes les interfaces disponibles seront affichées, mais que se passe-t-il si je souhaite simplement en afficher une active
? Comme, en0
seulement en dessous.
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**
L'avis ifconfig en0
ne satisfera pas, en0
n'est pas toujours actif;)
J'utilise Mac OS X.
command-line
networking
osx
interface
qweruiop
la source
la source
ifconfig
implémentations varient. Aussi, pourquoi l'utilisation est-elleifconfig
une exigence? Quel est votre objectif final?Réponses:
Pour obtenir une description complète de tous les services actifs, essayez:
Ce regex simple devrait filtrer uniquement les interfaces actives et toutes leurs informations. Je vous suggère de mettre un alias pour cela dans votre fichier ~ / .profile ou ~ / .bash_profile (peut-être ifactive?)
Pour obtenir simplement le nom de l'interface (utile pour les scripts), utilisez:
Vous devez installer pcregrep pour que cela fonctionne. C'est sur macports dans le paquet pcre. Alternativement, cela devrait fonctionner avec GNU grep en utilisant
grep -Pzo
au lieu depcregrep -M -o
mais avec le reste le même, mais je n'ai pas testé cela.la source
Si vous ne souhaitez imprimer "l'entrée" que si elle contient
status: active
, vous pouvez utiliser quelque chose comme ce programme awk comme filtre pour la sortie ifconfig :Lorsque chaque «entrée» démarre (une ligne est vide ou ne commence pas par un onglet), commencez à enregistrer l'entrée dans un tampon. Ajoutez à ce tampon toutes les lignes suivantes commençant par un Tab. Surveillez la chaîne magique
status: active
; si une ligne comme celle-ci a été vue, imprimez le tampon (l '«entrée» précédente) quand une nouvelle «entrée» commence (ou l'entrée se termine).Enregistrez le texte du programme ci-dessus dans un fichier et utilisez-le comme ceci:
Ou, si vous avez
chmod +x
le fichier, vous pouvez le simplifier un peu:la source
Si vous n'êtes pas opposé à certains scripts bash, vous pouvez le faire:
Cela listera les interfaces réseau actives. Testé sur Mac OS X 10.13.
La bonne chose est que vous n'avez rien à installer. Exécutez simplement ce qui précède dans un terminal.
la source
ifconfig -lu
ne fonctionnera pas sur Debian. Mais OP utilise quand même MacOS, donc cette solution fonctionnerait sur les systèmes avec BSDifconfig
. J'ai posté une autre réponse ci-dessous qui fait la même chose sans utiliserifconfig -lu
En lisant vos commentaires et vos questions, il semble que vous souhaitiez simplement obtenir les interfaces auxquelles une adresse IP leur a été attribuée.
Vous pouvez le faire rapidement avec
ifconfig
etgrep
.Exécution de la commande:
Devrait produire quelque chose de similaire à:
Cela afficherait chaque ligne avec un nom d'interface et et IP s'ils en avaient un.
Une magie REGEX plus spécifique pourrait vous fournir exactement ce dont vous avez besoin.
la source
active
considération?J'aimerais que la question soit un peu plus claire. En supposant que par
Active interface only
, vous vouliez afficher le nom des interfaces actives uniquement (dans mon casUP
et monRUNNING
étatactive
) sans aucun autre détail. Essayez ensuite ceci:La sortie ressemblerait à:
Ajustez le
grep -v
champ et ajoutez des interfaces plus indésirables commeloopback
->lo
etc, si nécessaire.Maintenant, si vous le souhaitez et que vous devez vérifier si les interfaces trouvées sont actuellement actives. Ensuite, nous pouvons simplement les passer comme argument pour
ifconfig <interface>
comme indiqué ci-dessous:[[ $(ifconfig en0 | grep -w active) ]] && echo "en0 is active"
Simplifier encore plus et l'implémenter dans une fonction:
L'exécution de cette fonction ne retournera que les interfaces actives. Dans mon cas:
la source
Ce qui suit imprimera uniquement les interfaces configurées pour avoir une adresse IP
la source
Obtenez l'interface ACTIVE MAC uniquement:
la source
ip
par défaut; vous avez besoin de HomeBrew pour cela, puis exécutezbrew install iproute2mac
une fois. Le code source est à github.com/brona/iproute2macComment ça fonctionne:
la source
Cela montrera l'état de la connexion Ethernet en0
la source