1 votes

sudo ifcong en0 down' - ne reste pas en bas dans OS X ?

Mon but est de terminer tout le trafic ethernet à travers en0 jusqu'à ce que je le remette en marche avec ifconfig en0 up .

Quand je cours ifconfig en0 down par le terminal, puis confirmez ifconfig et toutes les interfaces sont inactives.

Cependant, le lendemain, je constate que en0 est de nouveau opérationnel automatiquement. Comment puis-je savoir ce qui l'a fait remonter, et y a-t-il un meilleur moyen de s'assurer qu'il reste éteint ?

1voto

user3439894 Points 52496

Utilisez le networksetup commande à la place. Sur mon système en0 est Wi-Fi, donc j'utilise networksetup -setairportpower en0 off . En fait, j'utilise un petit AppleScript qui se trouve dans mon Dock et qui fait basculer l'état. Voir le page de manuel de networksetup pour des informations supplémentaires en utilisant networksetup .

Sauvegarder l'AppleScript code en tant qu'application nommée Toggle Wi-Fi et vous pouvez ensuite l'exécuter selon vos besoins/souhaits. Si vous l'exécutez et que le Wi-Fi est activé, il le désactive, et s'il est désactivé, il l'active.

on run
    set interface to "en0"
    set status to do shell script "ifconfig " & interface & " | awk '/status:/{print $2}'"

    if status is "inactive" then
        do shell script "networksetup -setairportpower " & interface & "  on"
        display dialog "The Wi-Fi Network Adapter is turned: ON" with title "Wi-Fi Network Adapter Status" buttons {"OK"} default button 1 giving up after 3
    else
        do shell script "networksetup -setairportpower " & interface & "  off"
        display dialog "The Wi-Fi Network Adapter is turned: OFF" with title "Wi-Fi Network Adapter Status" buttons {"OK"} default button 1 giving up after 3
    end if
end run

Mise à jour pour aborder l'utilisation de l'adaptateur Ethernet :

on run
    set interfaceNumber to "en0"
    set interfaceName to "Display Ethernet"
    set status to do shell script "ifconfig " & interfaceNumber & " | awk '/status:/{print $2}'"

    if status is "inactive" then
        do shell script "networksetup -setnetworkserviceenabled " & quoted form of interfaceName & " on with administrator privileges"
        display dialog "Network Adapter " & interfaceNumber & " is turned: ON" with title interfaceName & " Network Adapter Status" buttons {"OK"} default button 1 giving up after 3
    else
        do shell script "networksetup -setnetworkserviceenabled " & quoted form of interfaceName & " off with administrator privileges"
        display dialog "Network Adapter " & interfaceNumber & " is turned: OFF" with title interfaceName & " Network Adapter Status" buttons {"OK"} default button 1 giving up after 3
    end if
end run

Remarque : Dans le code ci-dessus, le nom de mon adaptateur Ethernet est "Display Ethernet". Vous devrez le changer pour le nom de votre adaptateur Ethernet, quel qu'il soit. Vous pouvez le vérifier dans Préférences Système > Réseau.

0voto

Gordon Davisson Points 30215

L'utilisateur 3439894 a répondu à la partie de la question concernant la façon de désactiver Ethernet et de le faire rester en bas ; j'aimerais aborder la question du pourquoi. ifconfig en0 down ne le fait pas.

La raison fondamentale est que MacOS possède deux niveaux différents de configuration réseau : l'état actif (qui ifconfig en0 down ) et la "base de données de configuration" qui correspond aux paramètres créés dans le volet Réseau des Préférences Système et/ou dans l'onglet networksetup commandement. Et il y a un "démon de configuration" ( configd ) dont le rôle est d'ajuster l'état du réseau en direct pour qu'il corresponde à ce que la base de données dit qu'il devrait être.

La raison de ce fonctionnement est que la base de données de configuration décrit les paramètres du réseau d'une manière plus souple et cohérente que l'état réel. Par exemple, la base de données de configuration peut contenir plusieurs groupes de paramètres ("emplacements") et passer facilement de l'un à l'autre, en ajustant les paramètres du réseau. tout -- état de l'interface, paramètres IP, routage, DNS, etc -- en une seule opération.

Quoi qu'il en soit, lorsque vous utilisez ifconfig en0 down vous avez créé une incohérence entre l'état réel et ce que la base de données de configuration indique comme état. configd ne le remarqueront pas immédiatement, car ce n'est pas le genre d'évènement configd (branchement ou débranchement d'un câble Ethernet, connexion ou abandon d'un réseau WiFi, etc.) Mais un peu plus tard, un peu de la chose se réveillera configd et cela peut (ou non) réinitialiser l'état de l'interface à ce que la base de données de configuration dit qu'il devrait être.

Donc, la solution est d'utiliser les préférences du réseau ou networksetup . Ils apportent tous deux des modifications à la base de données de configuration, puis réveillent configd afin d'appliquer les changements à l'état réel.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X