Fügen Sie mit dem Terminal bestimmte Dienste zum Netzwerkstandort hinzu

Ich möchte die Erstellung meiner Netzwerkstandorte automatisieren (z. B. Homeund Work) und habe mich damit befasstnetworksetup -createlocation <location name> [populate]

Durch das Hinzufügen populatewerden dem Netzwerkstandort Standarddienste hinzugefügt (USB LAN, Wi-Fi, Bluetooth PAN, Thunderbolt Bridge), ohne dass der Standort leer bleibt.

Gibt es eine Möglichkeit, einem Netzwerkstandort bestimmte Dienste hinzuzufügen? networksetup -printcommands | grep -i locationfällt nichts Hilfreiches ein.

Antworten (2)

networksetup verwendet ein irgendwie hierarchisches Namenssystem für die Unterbefehle. Standort- Unterbefehle werden nur verwendet, um Standorte selbst zu verwalten: Sie können Standorte entweder auflisten, abrufen (den aktuellen), erstellen, löschen oder zwischen Standorten wechseln.

Das Ändern der Netzwerkdienste eines Standorts erfolgt im Netzwerkdienst "Namespace".

Um die Netzwerkdienste an einem Ort zu verwalten, können Sie entweder „Blacklisting“ oder „Whitelisting“ verwenden:

Wenn Sie unerwünschte Netzwerkdienste ausführen und entfernen, ist dies eine schwarze Liste, networksetup -createlocation <location name> ohne dass Sie alle erforderlichen Netzwerkdienste hinzufügen müssen, und es ist eher eine weiße Liste.populate populate

So entfernen Sie einen Netzwerkdienst im Falle einer Blacklisting-Nutzung:

... -removenetworkservice <networkservice>

So fügen Sie einen Netzwerkdienst im Falle einer Whitelisting-Nutzung hinzu:

...  -createnetworkservice <networkservice>
Ich wollte einen Whitelisting-Ansatz wählen, wusste aber nicht, wie das geht. Wie in der anderen Antwort erwähnt, muss man zum neuen Standort wechseln, da networksetupnur Dienste am aktuellen Standort erstellt werden können. Das fühlt sich für mich komisch an, da dies bedeutet, dass die Konnektivität verloren geht. Gibt es eine Möglichkeit, dies zu tun, während die Konnektivität erhalten bleibt?
@oschrenk Übertragen Sie ein Shell-Skript (das mit networksetup -switchlocation (local)allen anderen Netzwerksetup-Befehlen für (local) und schließlich a networksetup -switchlocation(remote) beginnt und enthält) auf die Remote-stdin!

Laut der Manpage für networksetup ( man networksetup)

-createlocation location [populate]Erstellen Sie einen Satz mit dem benutzerdefinierten Namen und füllen Sie ihn optional mit den Standarddiensten auf.

Das Verhalten, das Sie sehen, wird also erwartet. Sie müssen die populateFunktion nicht verwenden; Fügen Sie einfach Ihre Dienstleistungen à la carte nach Bedarf hinzu.

Bevor Sie jedoch einen Standort ändern können, müssen Sie zuerst zu ihm wechseln (aktivieren):

$ networksetup -listlocations             <------ Lists all locations configured
$ networksetup -getcurrentlocation        <------ Currently selected location
$ networksetup -switchlocation location  <------ Sets current location

Wechseln Sie unter Verwendung Ihrer beiden Standorte (Zuhause und Arbeit) zu dem gewünschten Standort und fügen Sie dann die betreffenden Dienste hinzu/ändern/entfernen Sie sie

Um beispielsweise einen "TestLAN"-Dienst mit dem Bluetooth PAN-Hardwaregerät im Heimnetzwerk zu erstellen, verwenden Sie Folgendes:

$ networksetup -switchlocation Home
$ networksetup -createnetworkservice TestLAN "Bluetooth PAN"

Zusätzliche Befehle, die Sie vielleicht erkunden möchten, networksetupsind:

-listallhardwareports
-listlocations
-listnetworkserviceorder
-listallnetworkservices

Am wichtigsten ist jedoch, dass Sie die Manpage für weitere Details durchsuchen.

Das Wechseln des Netzwerkstandorts war für mich das fehlende Glied. Mein Gehirn blieb bei der Idee hängen, einen Dienst an einen Standort zu übergeben. Das Wechseln zum neuen Standort und das anschließende Erstellen der Dienste fühlt sich immer noch seltsam an, da dies bedeutet, dass die Konnektivität verloren geht. Wie geht das aus der Ferne?
Verwenden Sie ein Bash-Skript auf der Fernbedienung, damit es weiterhin Befehle ausführt, wenn Sie die Verbindung trennen. Ich würde wahrscheinlich zuerst einen PoC lokal durchführen, perfektionieren und dann das Skript auf der Fernbedienung hochladen/ausführen. Sie tun nichts, um versehentlich den Zugriff auf Ihren Computer aus der Ferne zu unterbinden, indem Sie einen Netzwerkadapter/Dienst deaktivieren