Wie erstelle ich für mehrere Benutzer einen Link zu einer Netzwerkfreigabe, die sich selbst auf einer Netzwerkfreigabe befindet?

Funktionierende Windows-basierte Lösung

Ich habe einen Ordner auf einer Netzwerkfreigabe, der unter Windows hervorragend funktioniert. Es ist im Grunde ein Index anderer verfügbarer Dateiserver. Es sieht in etwa so aus:

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

Ich versuche, diese Funktionalität in macOS zu replizieren, bin aber auf folgende Probleme gestoßen:

Versuch, einen Alias ​​in macOS zu verwenden

Ich habe mich //server2/filesüber Findermit verbunden Go -> Connect to Server. Sobald ich verbunden war Finder, erstellte ich eine AliasVerwendung für den //server2/filesOrdner. Das habe ich dann Aliasan den //server1/directoryOrt kopiert. Das Aliasfunktioniert ... solange ich denselben Computer verwende, von dem aus ich die Alias. Aber wenn ich versuche, es von einem anderen Mac zu verwenden, schlägt es fehl.

Der andere Mac scheint die Datei nicht einmal als AliasDatei zu erkennen. Es hat ein Symbol ähnlich einem terminalSymbol, und wenn ich darauf doppelklicke, sagt mir der Mac, dass keine Anwendung zum Öffnen der Datei definiert ist. Mir ist aufgefallen, dass die ursprünglich erstellte AliasDatei keine Erweiterung zu haben scheint, daher bin ich mir nicht sicher, wie ein anderer Mac sie als Datei erkennen soll Alias.

Das Schöne an einer Windows- .lnkDatei ist, dass sie zuverlässig und konsistent zu funktionieren scheint, egal von welchem ​​Computer aus auf sie .lnkzugegriffen wird, während eine Mac- AliasDatei irgendwie von einer Konfiguration des ursprünglichen Computers abzuhängen scheint, auf dem sie erstellt wurde.

Wenn ich beispielsweise die AliasDatei in viöffne, kann ich im verstümmelten Code sehen, dass sie mindestens den Benutzernamen enthält, der für den Zugriff auf die Freigabe verwendet wird, während ich möchte, dass jeder Benutzer, der auf die klickt, mit seinen Aliaseigenen Anmeldeinformationen auf die Freigabe zugreift (die mac mit AD verbunden ist und Benutzer sich mit ihren AD-Anmeldeinformationen anmelden). Auch dies funktioniert nahtlos mit UNC-Pfaden und .lnk-Dateien.

Versuch, ein Terminalskript in macOS zu verwenden

Ich habe versucht, ein einfaches Skript zu erstellen, das die Freigaben einbindet. Also //server1/directoryhabe ich drinnen eine Datei Server2.commandmit folgendem Inhalt erstellt:

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

Mein Problem mit dieser Lösung ist, dass ich viele Server und viele Benutzer habe, die denselben Computer verwenden. Eine großartige Sache bei der Verwendung der Connect to ServerOption im Finder ist, dass sie das Verzeichnis scheinbar automatisch "aufräumt" /Volumes. Nach dem Auswerfen einer Freigabe oder nach dem Beenden einer Sitzung wird der entsprechende /Volumes/SharenameOrdner entfernt. Ich sehe keine Möglichkeit, dasselbe Verhalten zu erreichen, wenn ich diese terminalbasierte Lösung verwende.

Frage

Kann mir jemand eine gute Möglichkeit geben, die .lnkoben beschriebene Funktionalität zu replizieren?

smbIch weiß, dass die Windows-Links über UNC-Pfade funktionieren, während ich in macOS nur über oder Mounts auf diese Netzwerkfreigaben zugreifen kann afp, aber da ich sehe, dass die Connect to ServerOption ziemlich genau so funktioniert, wie ich es brauche, brauche ich nur eine Möglichkeit, dieselbe Funktionalität zu verwenden , mit der Einschränkung, dass ich es automatisieren muss, da ich meine Benutzer (ich habe viele Benutzer, die denselben Computer verwenden) nicht auffordern werde, jeweils eine manuell zu erstellen Connect to Server Alias.

Ja, wie Sie festgestellt haben, sind Aliase ziemlich eng mit dem Computer verbunden, der sie erstellt hat. Der Weg, dies zu umgehen, wären normalerweise symbolische Links, obwohl ich nicht sicher bin, wie gut das in der gewünschten Anordnung funktionieren würde.
Ich glaube nicht, dass ich einen symbolischen Link zu einer smboder afpFreigabe erstellen kann. Ich konnte nur einen symbolischen Link zu einem Einhängepunkt auf dem Computer erstellen, was mein Problem nicht wirklich löst. Ich brauche grundsätzlich eine "mount-on-demand"-Lösung, die auch eine "unmount-on-demand"-Funktion beinhaltet. Alle Funktionen, die ich benötige, sind bereits in Finder enthalten Connect to Server. Ich brauche im Grunde eine Möglichkeit, diese Funktionalität von der Befehlszeile aus aufzurufen oder auf andere Weise zu replizieren.

Antworten (3)

Antwort gefunden. Sie müssen eine .afplocDatei erstellen. Dies ist vergleichbar mit einer .inetlocDatei.

Der einfachste Weg, eine Datei zu erstellen .afploc:

  1. offenFinder
  2. Go -> Connect to Server
  3. Geben Sie die Adresse in das Connect to ServerFenster ein (zafp://server.domain.com/
  4. Markieren Sie, was Sie gerade eingegeben haben ( afp://server.domain.com)
  5. Nehmen Sie das, was Sie gerade markiert haben, und ziehen Sie es auf den Desktop (oder vermutlich einen beliebigen Ordner) und lassen Sie es los
  6. eine Datei mit dem Namen server.domain.com.afplocsollte automatisch auf Ihrem Desktop erstellt werden
  7. Sie können diese Datei dann überall hin kopieren und sie wird funktionieren, um den Go -> Connect to ServerProzess automatisch auf jedem Mac-Computer zu starten
  8. Sie können die Datei auch umbenennen, wenn Sie möchten, und Sie können ihren Inhalt bearbeiten, um andere .afplocDateien zu erstellen, die auf andere Server oder Pfade verweisen
  9. Sie können auch denselben Prozess verwenden und einen smb://Pfad ersetzen. Dadurch wird eine .inetlocDatei erstellt, die auf die gleiche Weise funktioniert
Danke dafür, leider stoße ich dabei auf zwei Probleme. 1. Die resultierende Inetloc-Datei fordert mich jedes Mal auf, mich anzumelden, und speichert meine Anmeldeinformationen nicht im Schlüsselbund, obwohl die Option dazu aktiviert ist, und 2. Die resultierende Inetloc-Datei kann nicht in der Seitenleiste platziert werden, ebenso wenig wie ein Symlink dazu. Irgendeine Idee, ob eines dieser Probleme umgangen werden kann? Ich möchte nur einen "Alias" für ein Netzwerkvolume dauerhaft in meiner Seitenleiste haben. Normale Symlinks verschwinden, wenn die Freigabe nicht gemountet ist.
@JVC: Sie können den Benutzernamen und das Passwort in der .inetloc-Datei hinzufügen. Bearbeiten Sie die Datei in einem Texteditor und ersetzen Sie sie smb://server/sharedurch smb://user:password@server/share.

Um Daniels Antwort zu ergänzen , ist es vielleicht erwähnenswert, dass diese .afploc- oder .inetloc-Dateien nur einfache XML-Plist-Dateien sind. Sie könnten sie also auch von Hand oder aus einem Skript generieren. Eine Beispieldatei für eine SMB-Freigabe sieht so aus:

<?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>

Wenn Sie also viele solcher Verknüpfungen definieren müssen, könnten Sie eine Datei wie diese haben:

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

Führen Sie dann dies aus, um .inetloc-Dateien für jede Serverfreigabe zu generieren:

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

Mein Gefühl darüber, was Sie in Mac OS (oder einem Unix) erreichen möchten, funktioniert mit einem symbolischen Link. Finder verfügt über Funktionen, die über den eingebetteten Funktionen des Betriebssystems liegen. Ich denke, ein Alias ​​​​funktioniert nicht mit Terminal / Shell. Symbolische Links werden auf der Shell erstellt, funktionieren aber auch transparent im Finder. Probieren Sie den Thread Backup iPhone to external drive on Mac aus ... das erklärt symbolische Links wunderbar.

Hoffe, das war, wonach Sie gesucht haben!

Ich weiß, wie ein symbolischer Link funktioniert, aber wenn ich mich nicht irre, funktioniert ein symbolischer Link nur, um auf einen Pfad im lokalen Dateisystem zu verweisen. Um einen symbolischen Link zu verwenden, müsste ich die Netzwerkfreigabe zuerst an einem lokalen Mountpoint mounten, was mich wirklich direkt zu demselben Problem zurückbringt, das ich mit meiner terminalbasierten Lösung habe.