Starten / Beenden der Internetfreigabe über das Terminal in Yosemite ohne AppleScript

6

Okay, ich sehe, dass diese Frage schon ein paar Mal gestellt wurde ( hier , hier , hier und hier ), aber keine von diesen beantwortet die Frage wirklich für mich.

Ich möchte die bereitgestellten AppleScript-Vorschläge nicht zum Aktivieren / Deaktivieren der Internetfreigabe verwenden, da zukünftige Aktualisierungen der GUI für die Systemeinstellungen möglicherweise das AppleScript beschädigen, wie dies in den oben verlinkten Beiträgen der Fall war, und die Lösung als etwas umständlich erscheint ehrlich.

Auf Yosemite, sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.InternetSharing.plistnicht mehr funktioniert , da es nicht mehr ist ein .plistgenannt InternetSharing.

Ich habe versucht, sudo defaults write /Library/Preferences/SystemConfiguration/com.apple.nat NAT -dict-add Enabled -int 1 was ich woanders gesehen habe, aber das schaltet nur das eigentliche Kontrollkästchen in den Systemeinstellungen um und aktiviert IS nicht wirklich.

Meine Frage lautet also letztendlich: Welche Prozesse muss ich über die Befehlszeile aufrufen, um die Internetfreigabe zu aktivieren, oder umgekehrt, welche Prozesse muss ich beenden, um die Internetfreigabe zu deaktivieren?

Stuart H
quelle
Haben Sie die Ethernet - Schnittstelle zu Fall zu bringen versucht , mit ifconfig en0 nach unten dann mit sichern ifconfig en0 up . In diesem Beispiel wird en0 verwendet, aber der Name Ihrer Schnittstelle hängt davon ab, welche verwendet wird. Das könnte die Änderung erzwingen.
IconDaemon
Ja, das habe ich versucht. Ich habe zwar nur versucht, das Wi-Fi neu zu starten (für das ich die Freigabe vornehme) und nicht das Ethernet (für das ich die Freigabe vornehme), aber ich bezweifle, welche neu gestartete Schnittstelle das Ergebnis beeinflussen würde.
Stuart H
Ich würde auch die Ethernet-Schnittstelle ausprobieren.
IconDaemon
Es gibt eine /System/Library/LaunchDaemons/com.apple.NetworkSharing.plist Haben Sie versucht, diese Option zu aktivieren / deaktivieren?
IconDaemon
Sie, mein Herr, sind ein wunderbares Wesen. Eine Kombination aus dem Herunterfahren der beiden Schnittstellen und dem Umschalten des Dämons zwischen dem Sortieren des Tricks. Ich überlasse es Ihnen, die Antwort zu posten, damit ich Sie wiedergeben kann. :)
Stuart H

Antworten:

3

Ich stolperte über eine scheinbar blöde einfache Möglichkeit, das Internet-Sharing neulich zu aktivieren / deaktivieren. Es muss nur ein bisschen Vorarbeit geleistet werden.

  1. Öffnen Sie Systemeinstellungen> Netzwerk
  2. Markieren Sie die Schnittstelle, von der aus Sie Ihre Verbindung freigeben möchten, und klicken Sie auf das Zahnrad unter der Schnittstellenliste
  3. Wählen Sie "Dienst duplizieren ..." aus.
  4. Geben Sie dem duplizierten Dienst einen Namen und speichern Sie ihn
  5. Stellen Sie den Dienst auf "DHCP mit manueller Adresse" ein (da einige DHCP-Server einem MAC keine zusätzliche Adresse zuweisen) und geben Sie eine gültige IP-Adresse ein

Das ist die Vorarbeit. Jetzt müssen Sie nur noch Ihre IS-Einstellungen ändern, um den neuen Dienst anstelle des vorhandenen Dienstes freizugeben. Anschließend können networksetup -setnetworkserviceenabled <networkservice> <on off>Sie den soeben erstellten Netzwerkdienst ein- oder ausschalten. In diesem Fall wird IS deaktiviert, da kein Dienst zum Empfangen des Internetzugangs verfügbar ist und Sie weiterhin Zugriff auf Ihren Computer haben, da noch eine aktive Schnittstelle mit Ihrem Netzwerk verbunden ist!

Stuart H
quelle
1
Ich kann Ihnen nicht genug für diese Antwort danken und habe seit Ewigkeiten versucht, eine Möglichkeit zu finden, wie man das mit Skripten umsetzt. Jetzt kann ich es endlich nachts ausschalten lassen, damit mein Computer schlafen kann, und es wieder einschalten, wenn ich es aufwecke.
Haravikk
1

Rufen Sie zunächst alle aktiven Internetschnittstellen mit dem Befehl terminal auf:

ifconfig [interface*] down

Dann finden Sie hier einen Start-Daemon:

/System/Library/LaunchDaemons/com.apple.NetworkSharing.plist

muss mit dem launchctlBefehl umgeschaltet werden .

Rufen Sie dann die Schnittstellen mit dem Befehl auf

ifconfig [interface*] up

* Hinweis: en0 ist die kabelgebundene Ethernet-Schnittstelle, während en1 die WLAN-Schnittstelle ist. Wenn Sie den ifconfigBefehl selbst ausführen, werden alle aktiven oder inaktiven Schnittstellen aufgelistet.

IconDaemon
quelle
Vielleicht habe ich zu früh gesprochen. Dies funktioniert zwar gut, um die Internetfreigabe zu deaktivieren, es scheint jedoch nicht gut zu funktionieren, um sie wieder zu aktivieren. :(
Stuart H
Haben Sie versucht, den Daemon umzuschalten, nachdem Sie die Schnittstellen aufgerufen haben?
IconDaemon
Ich habe versucht, den Daemon umzuschalten und dann die Schnittstellen aufzurufen, und zwar mit einer Verzögerung, um die Initialisierung zu ermöglichen, nach dem Aufrufen der Schnittstellen umzuschalten, nach dem Umschalten des Daemons die Freigabe-Schnittstelle umzuschalten und sogar die startOption " launchctlAlles ohne Erfolg" zu verwenden .
Stuart H
0

Ich habe folgendes gemacht:

  • Duplizieren Sie die Position "Automatisch". Ich habe dem Duplizierten den Namen "Shared" gegeben.
  • Benennen Sie an der Position "Shared" die Ethernet-Schnittstelle in "Shared Ethernet" um.
  • Konfigurieren Sie das freigegebene Internet für die Verwendung der Schnittstelle "Shared Ethernet".

Bei diesem Setup wird beim Wechsel von "Automatisch" zu "Gemeinsam" die "Gemeinsam Ethernet" -Schnittstelle verfügbar / nicht verfügbar und daher kann die Internetfreigabe aktiviert / deaktiviert werden.

Von hier aus ist die Verwendung der Befehlszeile nur eine Frage des Aufrufs

networksetup -switchtolocation "Shared"

oder

networksetup -switchtolocation "Automatic"

Filipe Figueiredo
quelle