Wie kann ich die Internetfreigabe aktivieren, ohne die GUI oder AppleScript zu verwenden?

Aus irgendeinem ziemlich seltsamen Grund stürzt mein Tab "Freigabeeinstellungen" ab (es ist eine lange Geschichte und es scheint keine gute Lösung dafür zu geben, es sucht nach einem UI-Objekt, das nicht mehr existiert).

Wie auch immer, ich möchte die Internetfreigabe aktivieren, um die Internetverbindung meines Macbooks mit meinem iPad zu teilen, aber ich kann keinen Weg finden, dies ohne das GUI- oder Apple-Skript zu tun (das im Grunde die GUI aufruft).

Das Problem ist, dass ich den Internet-Sharing-Daemon sowohl (1) einrichten als auch (2) ausführen muss. Den Daemon auszuführen ist einfach, aber ich kann ihn nicht konfigurieren.

Bisher denke ich, ich muss 1- Routing aktivieren 2- natd ausführen 3- sicherstellen, dass die Firewall richtig konfiguriert ist 4- ein drahtloses Peer-to-Peer-Netzwerk über WLAN erstellen. Eine andere Möglichkeit besteht darin, das Problem zu verwenden sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.InternetSharing.plist, da ich mindestens eine gültige Snow Leopard .plist-Datei benötige, damit dies funktioniert.

Eine andere Lösung, die ich ausprobiert habe, ist die Verwendung einer virtuellen Maschine (ich verwende eine Ubuntu-VM in Parallels), um die Verbindungsfreigabe durchzuführen. Es funktioniert, aber es ist zu viel Arbeit.

(Falls Sie sich fragen, wenn ich auf der Registerkarte "Einstellungen" auf "shring" klicke, stürzt es ab und in der Konsole erhalte ich eine Fehlermeldung wie "unbekannte Klasse 'AppleSharing_NatManager', die stattdessen 'NSObject' verwendet")

Irgendwelche Kommentare?

Nein, das habe ich gelesen, bevor ich gepostet habe. Normalerweise müssen Leute, wenn sie die Internetfreigabe mit einem Skript automatisieren möchten, Apple-Skripte verwenden (die im Grunde auf die richtigen Schaltflächen und Kontrollkästchen "klicken", um die Arbeit zu erledigen. Wie ich erklärt habe, kann ich das nicht verwenden, weil meine Benutzeroberfläche meine Einstellungen ist kaputt. Ich brauche eine "unixigere" Art, dies zu tun.
Lesen Sie die ausgewählte Antwort nicht, lesen Sie den Link, der die meisten Stimmen hat, und verwenden Sie kein GUI-Skripting.
@Ali: Ich denke, es könnte einfacher sein, Ihr Einstellungsfenster zu reparieren ;-) Haben Sie versucht, ob es erfolgreich geöffnet wird, wenn es von einem anderen Benutzerkonto aus gestartet wird? Und haben Sie versucht, die andere .plist-Datei aus dem Weg zu räumen, um zu sehen, ob das Problem weiterhin besteht?
@mankoff du bist so bescheiden und erwähnst nicht einmal, dass deine Antwort nicht ausgewählt wurde, aber mit den meisten Stimmen. :) +1!
@ghoppe oh scheiße :). Wie auch immer, ich habe versucht, auf meine Antwort zu verlinken, aber die Software hat sie nur auf die Frage reduziert, was es schwierig macht, sie zu finden ...
@Ali Mir ist klar, dass meine verknüpfte Lösung für Sie nicht funktioniert. Mein Vorschlag: Beheben Sie das Problem, nicht das Symptom. Finden Sie heraus, warum Ihr Pref-Pane/Plist abstürzt, sei es ein seltsames UI-Objekt oder ein ungültiges Plist, und beheben Sie das.
@Ali ist Ihre UI-Sprache Englisch? Ich glaube, es gibt manchmal Probleme mit anderen Sprachen.
@mankoff Meine Benutzeroberfläche ist Englisch. Ich habe andere Tastaturen (Dvorak und Persisch) installiert, aber die Benutzeroberfläche ist Standard-US-Englisch.
@Asmus @mankoff , ich habe versucht, das "Problem" zu lösen, aber es rührt sich nicht! Ich möchte mein Betriebssystem nicht neu installieren.
@makoff, danke. Ihre Lösung zum Starten des Daemons funktioniert einwandfrei. Aber mein Problem ist, dass ich eine richtige Plist oder andere Mittel brauche, um meine Internetfreigabe zu konfigurieren. Ohne die richtige Konfiguration hilft der Daemon nicht viel.
kann jemand, der seine Plist mit mir teilt? Ich muss mein LAN-Internet mit meinem WLAN teilen

Antworten (4)

Die plist, die andere erwähnt haben ( /System/Library/LaunchDaemons/com.apple.InternetSharing.plist), scheint sich unabhängig vom Zustand der Internetfreigabe nie zu ändern – zumindest unter Snow Leopard.

Ich denke, die Antwort liegt irgendwo in /usr/libexec/InternetSharingund /etc/boopd.plist.

Versuchen Sie zunächst, Folgendes auszuführen:

sudo /usr/libexec/InternetSharing -d

Sie werden wahrscheinlich Nachrichten wie die folgenden sehen:

InternetSharing[40307]: InternetSharing starting

/etc/bootpd.plist is empty/missing

InternetSharing[40307]: no primary service specified, exiting

Es stellt sich heraus, dass es /etc/bootpd.plisterstellt wird, wenn die Internetfreigabe aus dem Freigabe-Pref-Fenster gestartet wird, und es wird gelöscht, wenn die Internetfreigabe deaktiviert wird.

Wenn Sie abenteuerlustig sind, können Sie versuchen, die Plist-Datei manuell zu erstellen. Ich habe die Internetfreigabe mit Ethernet aktiviert, die für AirPort freigegeben ist, und den Text der resultierenden /etc/bootpd.plistDatei hier in ein Pastebin kopiert: http://pastebin.com/gQVzARfa

Diese Plist enthält nicht alle notwendigen Einstellungen (z. B. SSID für die drahtlose gemeinsame Verbindung), daher gehe ich davon aus, dass sie nicht alleine funktionieren wird. Ich suche immer noch nach den anderen Einstellungen und werde diese Antwort aktualisieren, wenn ich sie finde. (Es ist möglich, dass einige als Parameter an übergeben werden /usr/libexec/InternetSharing, aber ich kann keine Dokumentation dazu finden.)

Nachdem Sie die Plist-Datei erstellt haben, versuchen Sie es sudo /usr/libexec/InternetSharing -derneut. Möglicherweise können wir diesen einen Fehler nach dem anderen abarbeiten. An diesem Punkt ist es wirklich eine akademische Übung, da es viel einfacher wäre, Ihr Betriebssystem neu zu installieren, um Ihr Pref-Pane-Problem zu beheben. ;]

Wenn es durch ein Wunder beginnt, /usr/libexec/InternetSharing -qwird es glaube ich aufhören zu teilen.

Es ist immer etwas riskant, mit Ihren Systemdateien herumzuspielen, also stellen Sie sicher, dass Sie eine aktuelle Sicherungskopie Ihrer wichtigen Dateien haben (ich empfehle Dropbox ).

@Austin Mann, das ist cool, es stellt sich heraus, dass selbst wenn ich die /etc/bootpd.plist erstelle, wenn ich sie nur berühre oder den von Ihnen bereitgestellten Inhalt kopiere (selbst wenn ich die Berechtigung auf 444 setze), sie beim Ausführen entfernt wird /usr/libexec/InternetSharingAber das Coole ist, dass ich jetzt von meinem iPad aus eine Verbindung zu meinem Mac herstellen kann! und SSH hinein. Es leitet die Pakete immer noch nicht weiter, sodass ich kein Internet auf meinem iPad habe, aber das ist ein Fortschritt. Übrigens ändert sich das AirPort-Symbol in einen nach oben gerichteten Pfeil, der meiner Meinung nach das Internetfreigabezeichen ist. Ich bin auch ein Dropbox-Fan!
@Austin übrigens '/usr/libexec/InternetSharing' kehrt für mich nicht zurück (ich bleibe hängen, bis ich Strg-C drücke) und ich sehe nicht die dritte Zeile von dem, was Sie oben erwähnt haben (das 'InternetSharing[40307 ]: kein primärer Dienst angegeben, Beenden').
@Ali Interessant, dass es vor dem Beenden hängt ... Könnte ein Symptom für dasselbe Problem sein, das Ihre Pref-Fenster plagt. Versuchen Sie vielleicht, einen Blick auf die Konsole ( /Applications/Utilities/Console.app) zu werfen und zu sehen, ob es dort nützliche Nachrichten gibt. Der "Pfeil nach oben" ist ein Hinweis auf AirPort Internet Sharing, also ist das zumindest ein gutes Zeichen.
@Austin, es bleibt hängen, es stürzt nicht ab, in der Konsole sehe ich "5/2/11 3:30:18 PM UserEventAgent[410] **** ERROR: SCNetworkSignatureCopyActiveIdentifiers return nil" . Was laut dieser Header-Datei ( opensource.apple.com/source/configd/configd-210/… ) eine Liste der verfügbaren Netzwerke oder so etwas zurückgeben sollte.
@Austin, weißt du, ob ich einfach Routing (Paketweiterleitung) zwischen den beiden Netzwerkschnittstellen aktivieren kann? das ist glaube ich das letzte Stück meines Puzzles.
@Ali Sie suchen vielleicht nach dem NAT-Daemon ( /usr/sbin/natd)? Docs hier: developer.apple.com/library/mac/#documentation/Darwin/Reference/… Befolgen Sie unbedingt zuerst die Schritte unten.

Um das UUID-Problem zu beheben, können Sie die UUID des Computers mit suchen system_profiler | grep 'Hardware UUID'und die Datei aktualisieren.

Das habe ich getan, als ich eine Kopie von einem anderen Mac holen musste, /Library/Preferences/SystemConfiguration/com.apple.nat.plistals ich bemerkte, dass mein Computer sie nicht hatte.

Trotz alledem stecke ich immer noch beim Versuch fest, meine Internetverbindung vom Ethernet zum Flughafen zu teilen.

Beim Ausführen sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.InternetSharing.plistwird die Benutzeroberfläche für die Internetfreigabe aktiviert, jedoch mit falschen Einstellungen (Freigabe vom Flughafen zum Ethernet - ich brauche das Gegenteil).

Trotz der launchctl-Ladeanforderung zeigen die Fehlerprotokolle immer noch dasselbe wie die Ausgabe fürsudo /usr/libexec/InternetSharing -d

Oct 14 01:54:39 boatdelight-lm InternetSharing[52015]: InternetSharing starting
Oct 14 01:54:39 boatdelight-lm InternetSharing[52015]: no primary service specified, exiting

Ich habe dies mit und ohne manuelles Erstellen der /etc/bootpd.plistDatei versucht.

man networksetup 

oder

man systemsetup 

könnte es tun.

Danke, ich wusste nichts über diese beiden Befehle. Aber da steht nichts über Internet-Sharing (oder nat oder Routing für diese Angelegenheit).

Dank @Austin und anderen habe ich das Problem endlich gelöst! Ich dachte, verdammt, das ist eine Unix-Box, ich sollte in der Lage sein, herauszufinden, was los ist! Ich habe einen anderen Snow Leopard-Computer bei der Arbeit gefunden, auf dem die Internetfreigabe nie aktiviert war, und in einem Terminal, das ich ausgeführt habe:
touch now && sudo find -x / -newer now

und ich habe eine kurze Liste von Dateien, die immer angezeigt werden (Spotlight-Indizes, Protokolldateien in /private/log und wenn Sie FileVault verwenden, eine Reihe verschlüsselter Sparse-Bundles)

dann habe ich Internet-Sharing aktiviert und dieses Mal lief ich: sudo find -x / -newer nowoffensichtlich ohne "Jetzt berühren". Es stellt sich heraus, dass es neben einer Reihe von Protokolldateien und anderem Müll eine Handvoll Dateien gibt, die geändert wurden. Ich habe sie alle auf meinen Rechner kopiert und die Schnittstellennamen und einige andere Hostnamen und IP-Adressen und ähnliches geändert. Das Problem ist damit aufgetreten, /Library/Preferences/SystemConfiguration/com.apple.nat.plistdass es dort einen primären Serviceschlüssel gibt, der auf eine UUID eingestellt ist, und er ist auf jedem Computer, den ich getestet habe, unterschiedlich (eigentlich 2 Computer), und es funktioniert nicht, wenn Sie ihn einfach von einem Computer zum nächsten kopieren.

* WENN SIE ES EILIG HABEN, LESEN SIE EINFACH DIESEN TEIL *

Von Anfang an habe ich es vermieden, mein Betriebssystem neu zu installieren, weil ich so viele Installationen und Konfigurationen hatte, die ich nicht verlieren wollte. Es stellte sich heraus, dass, wenn Sie die mit Ihrem Computer gelieferte Original-DVD verwenden und Ihr Betriebssystem neu installieren, ALLE IHRE ANWENDUNGEN, STARTVERZEICHNIS, benutzerdefinierte Modifikationen, Mac-Ports und Fink-Installationen, Einstellungen, Netzwerk-Mounts, Netzwerkstandorte, Entwicklertools, ALLE ERHALTEN WERDEN. ABER ES INSTALLIERT DIE KERNSYSTEMKOMPONENTEN NEU, die mein Einstellungsfreigabefenster reparieren!