¿Cómo crear un enlace, para múltiples usuarios, a un recurso compartido de red, que a su vez está en un recurso compartido de red?

Solución de trabajo basada en Windows

Tengo una carpeta en un recurso compartido de red que funciona muy bien en Windows. Es básicamente un índice de otros servidores de archivos disponibles. Se ve algo como esto:

\\server1\directory
    Server2.lnk   <-(links to \\server2\files)
    Server3.lnk   <-(links to \\server3\files)
    Server4.lnk   <-(links to \\server4\files)

Estoy tratando de replicar esta funcionalidad en macOS, pero me he encontrado con estos problemas:

Intentar usar un alias en macOS

Me conecté a //server2/filestravés Finderde Go -> Connect to Server. Una vez que me conecté Finder, creé un Aliasuso para la //server2/filescarpeta. Luego lo copié Aliasen la //server1/directoryubicación. Funciona Alias... siempre y cuando esté usando la misma computadora desde la que creé el archivo Alias. Pero si trato de usarlo desde otra mac, falla.

La otra Mac ni siquiera parece reconocer el archivo como un Aliasarchivo. Tiene un ícono similar a un terminalícono, y cuando hago doble clic en él, la mac me dice que no hay una aplicación definida para abrir el archivo. Me di cuenta de que el Aliasarchivo original creado no parece tener ningún tipo de extensión, por lo que no estoy seguro de cómo se supone que una Mac diferente lo reconozca como un Aliasarchivo.

Lo bueno de un .lnkarchivo de Windows es que parece funcionar de manera confiable y consistente sin importar desde qué máquina se .lnkacceda, mientras que un Aliasarchivo de Mac parece depender de alguna manera de alguna configuración de la máquina original donde se creó.

Por ejemplo, si abro el Aliasarchivo en vi, puedo ver entre el código distorsionado que incluye al menos el nombre de usuario utilizado para acceder al recurso compartido, mientras que quiero que cada usuario que haga clic en acceda al recurso compartido Aliascon sus propias credenciales (el mac se une a AD y los usuarios inician sesión con sus credenciales de AD). Nuevamente, esto funciona a la perfección con rutas y .lnkarchivos UNC.

Intentar usar un script de terminal en macOS

Traté de hacer un script simple que monte los recursos compartidos. Así que dentro //server1/directorycreé un archivo Server2.commandcon el siguiente contenido:

mkdir /Volumes/Server2
mount_smbfs //server2/files /Volumes/Server2
cd /Volumes/Server2
open .

Mi problema con esta solución es que tengo muchos servidores y muchos usuarios usando la misma máquina. Una gran cosa sobre el uso de la Connect to Serveropción en Finder es que parece "limpiar" automáticamente el /Volumesdirectorio. Después de expulsar un recurso compartido, o después de finalizar una sesión, elimina la /Volumes/Sharenamecarpeta correspondiente. No veo ninguna forma de lograr el mismo comportamiento si uso esta solución basada en terminal.

Pregunta

¿ Puede alguien darme una buena manera de replicar la .lnkfuncionalidad que he descrito anteriormente?

Sé que los enlaces de Windows funcionan a través de rutas UNC, mientras que en macOS solo puedo acceder a estos recursos compartidos de red a través de montajes, pero como veo que la opción funciona más smbo menos como lo necesito, solo necesito una forma de usar esa misma funcionalidad , con la salvedad de que necesito automatizarlo, porque no voy a pedirles a mis Usuarios (tengo muchos Usuarios usando la misma máquina) que creen uno manualmente.afpConnect to ServerConnect to Server Alias

Sí, como ha descubierto, los alias están estrechamente vinculados a la computadora que los creó. La forma de evitar esto normalmente serían enlaces simbólicos, aunque no estoy seguro de qué tan bien funcionaría en el arreglo que desea.
No creo que pueda crear un enlace simbólico a un smbo afpcompartir. Solo pude crear un enlace simbólico a un punto de montaje en la computadora, lo que realmente no resuelve mi problema. Básicamente, necesito una solución de "montaje a pedido" que también incluya una función de "desmontaje a pedido". Toda la funcionalidad que necesito ya está contenida en Finder's Connect to Server. Básicamente, necesito una forma de llamar a esa funcionalidad desde la línea de comando o replicarla de otra manera.

Respuestas (3)

Encontré la respuesta. Debe crear un .afplocarchivo. Esto es similar a un .inetlocarchivo.

La forma más fácil de crear un .afplocarchivo:

  1. abiertoFinder
  2. Go -> Connect to Server
  3. escriba la dirección en la Connect to Serverventana (p. ej.afp://server.domain.com/
  4. Resalta lo que acabas de escribir ( afp://server.domain.com)
  5. tome lo que acaba de resaltar y arrástrelo al escritorio (o cualquier carpeta, presumiblemente) y suéltelo
  6. un archivo llamado server.domain.com.afplocdebe ser creado automáticamente en su escritorio
  7. luego puede copiar ese archivo en cualquier lugar y funcionará para iniciar automáticamente el Go -> Connect to Serverproceso en cualquier computadora Mac
  8. también puede cambiar el nombre del archivo si lo desea, y puede editar su contenido para crear otros .afplocarchivos que apunten a otros servidores o rutas
  9. también puede usar este mismo proceso y sustituir una smb://ruta. esto crea un .inetlocarchivo que funciona de la misma manera
Gracias por esto, lamentablemente me encuentro con dos problemas con él. 1. El archivo inetloc resultante me solicita que inicie sesión cada vez y no almacena mis credenciales en el llavero a pesar de que la opción para hacerlo está marcada, y 2. El archivo inetloc resultante no se puede colocar en la barra lateral, ni tampoco un enlace simbólico. lo. ¿Alguna idea de si alguno de estos problemas se puede solucionar? Solo quiero un "alias" para un volumen de red de forma permanente en mi barra lateral. Los enlaces simbólicos normales desaparecen si el recurso compartido no está montado.
@JVC: puede agregar el nombre de usuario y la contraseña en el archivo .inetloc. Edite el archivo en un editor de texto y reemplácelo smb://server/sharecon smb://user:password@server/share.

Para complementar la respuesta de Daniel , vale la pena señalar que estos archivos .afploc o .inetloc son simplemente archivos XML plist. Así que también podrías generarlos a mano o desde un script. Un archivo de ejemplo para un recurso compartido smb se ve así:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>URL</key>
    <string>smb://server/share</string>
</dict>
</plist>

Entonces, si tiene muchos accesos directos para definir, podría tener un archivo como este:

$ cat shares.txt 
server1 share1
server2 share2
server3 other-share

Y luego ejecute esto para generar archivos .inetloc para cada servidor compartido:

cat shares.txt | while read server share; do
  cat <<'EOF' >"$server-$share.inetloc"
  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  <plist version="1.0">
  <dict>
      <key>URL</key>
      <string>smb://$server/$share</string>
  </dict>
  </plist>
EOF
done

Mi sentimiento sobre lo que quiere lograr en Mac OS (o Unix) funciona con un enlace simbólico. Finder tiene funcionalidades por encima de las funciones integradas del sistema operativo. Supongo que un alias no funcionará con Terminal/Shell. Los enlaces simbólicos se crean en el shell, pero también funcionan de forma transparente en Finder. Pruebe el hilo Copia de seguridad del iPhone en un disco externo en Mac ... esto explica maravillosamente los enlaces simbólicos.

¡Esperanza, esto era lo que estabas buscando!

Sé cómo funciona un enlace simbólico, pero a menos que me equivoque, un enlace simbólico solo funciona para señalar una ruta en el sistema de archivos local. Para usar un enlace simbólico, primero tendría que montar el recurso compartido de red en un punto de montaje local, lo que realmente me lleva de vuelta al mismo problema que tengo con mi solución basada en terminal.