Agregue servicios específicos a la ubicación de la red con terminal

Quiero automatizar la creación de mis ubicaciones de red (digamos Homey Work) y estaba investigandonetworksetup -createlocation <location name> [populate]

Agregar populateagrega servicios predeterminados a la ubicación de la red (USB LAN, Wi-Fi, Bluetooth PAN, Thunderbolt Bridge) y deja la ubicación vacía.

¿Hay alguna manera de agregar servicios específicos a una ubicación de red? networksetup -printcommands | grep -i locationno se le ocurre nada útil.

Respuestas (2)

networksetup usa un sistema de nombres jerárquico para los subcomandos. Los subcomandos de ubicación se utilizan para administrar las ubicaciones en sí mismas: puede enumerar, obtener (la actual), crear, eliminar o cambiar entre ubicaciones.

La modificación de los servicios de red de una ubicación se realiza en el "espacio de nombres" del servicio de red .

Para administrar los servicios de red en una ubicación, puede usar una "lista negra" o una "lista blanca":

Si ejecuta networksetup -createlocation <location name> con populate y elimina los servicios de red no deseados, está en la lista negra, sin que populate tenga que agregar todos los servicios de red requeridos y es más bien en la lista blanca.

Para eliminar un servicio de red en caso de uso en la lista negra:

... -removenetworkservice <networkservice>

Para agregar un servicio de red en caso de uso de la lista blanca:

...  -createnetworkservice <networkservice>
Quería optar por un enfoque de lista blanca, pero no pude ver cómo hacerlo. Como se señaló en la otra respuesta, uno tiene que cambiar a la nueva ubicación ya que networksetupsolo puede crear servicios en la actual. Esto se siente raro para mí, ya que esto significa perder la conectividad. ¿Alguna forma de hacer esto manteniendo la conectividad?
@oschrenk Transfiera un script de shell (que comience networksetup -switchlocation (local)y contenga todos los demás comandos de configuración de red para (local) y finalmente un networksetup -switchlocation(remoto)) al stdin remoto.

De acuerdo con la página del manual de configuración de red ( man networksetup)

-createlocation location [populate]Cree un conjunto con el nombre definido por el usuario y, opcionalmente, rellénelo con los servicios predeterminados.

Entonces, el comportamiento que está viendo es el esperado. No necesita usar la populatefunción; simplemente agregue sus servicios a la carta según sea necesario.

Dicho esto, antes de que pueda modificar una ubicación, primero debe cambiar a ella (activarla):

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

Usando sus dos ubicaciones (Casa y Trabajo), cambie a la ubicación que desee y luego agregue/modifique/elimine los servicios en cuestión

Por ejemplo, para crear un servicio "TestLAN" usando el dispositivo de hardware Bluetooth PAN en la red doméstica, use lo siguiente:

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

Los comandos adicionales con los que quizás desee explorar networksetupson:

-listallhardwareports
-listlocations
-listnetworkserviceorder
-listallnetworkservices

Sin embargo, lo más importante es que debe explorar la página del manual para obtener más detalles.

Cambiar la ubicación de la red era el eslabón perdido para mí. Mi cerebro se atascó con la idea de pasar un servicio a una ubicación. Cambiar a la nueva ubicación y luego crear los servicios todavía se siente extraño, ya que eso significa perder la conectividad. ¿Cómo se hace esto a distancia?
Use un script bash en el control remoto para que continúe ejecutando comandos cuando se desconecte. Probablemente haría un PoC localmente primero, lo perfeccionaría y luego cargaría/ejecutaría el script en el control remoto. No sabe qué eliminar inadvertidamente el acceso a su máquina de forma remota al deshabilitar un servicio/adaptador de red