In Windows 10 ist es über den Windows Explorer möglich, eine Netzwerkverbindung für ein Remote-Verzeichnis herzustellen, und dank des Ansatzes ist es möglich, diese Verbindung einem LaufwerkMap network drive
zugeordnet zu halten . Wenn also drei Computer denselben Verzeichnisnamen haben – betrachten wir Dokumente – ist dies möglich :
M:\documents
N:\documents
W:\documents
In Mac - El Capitan - durch:
Finder
-> Go
->Connect to Server
Möglich ist die Verbindung mitsmb://hostname/documents
Daher documents
wird das Remote-Verzeichnis eingehängt/Volumes
/Volumes
documents
Das Problem ist, was passiert, wenn zwei andere Computer denselben Dokumentenverzeichnisnamen haben ? - Betrachten Sie es als obligatorische Richtlinie des Unternehmens - Wie wird es montiert /Volumes
? Wie erkennen Sie jedes gemountete Remote-Verzeichnis auf jeder Maschine im LAN? Ich möchte das gemountete Verzeichnis über den Finder umbenennen, aber das ist nicht möglich.
Ich möchte in MacOS /Volumes
folgende Struktur haben:
/Volumes
192.168.1.55
documents
192.168.1.56
documents
192.168.1.57
documents
Es soll die isolierten Pfade zur Verfügung haben, die für einige Bash-Shell-Skripte verwendet werden können. Wie erreichen Sie dieses Ziel?
Nachfolgend finden Sie ein Beispielskript. Dieses Skript ist den Aktionen nachempfunden, die von der Finder-Anwendung ausgeführt werden. Um diese Antwort zu vereinfachen, findet eine kleine Fehlerprüfung statt.
#!/bin/bash
sudo mkdir -p "/Volumes/${1#*@}"
sudo chown $USER:staff "/Volumes/${1#*@}"
mount -t smbfs -o nodev,nosuid "$1" "/Volumes/${1#*@}"
mount | grep -q "/Volumes/${1#*@}" && open "/Volumes/${1#*@}"
Hinweis: Da Ordner innerhalb des Ordners erstellt werden müssen
/Volumes
, kann das Kennwort des Benutzers vom Skript angefordert werden.
Wenn das Skript in der Datei gespeichert wird connect
, lautet die Zusammenfassung wie folgt.
connect //user[:password]@server/share
Ein Beispiel ist unten angegeben.
./connect //davidanderson@192.168.1.55/documents
In diesem Beispiel wäre der Einhängepunkt wie folgt.
/Volumes/192.168.1.55/documents
Zum Aushängen wäre die Zusammenfassung wie folgt.
diskutil unmount /Volumes/server/share
Ein Beispiel für den Befehl zum Unmounten ist unten angegeben.
diskutil unmount /Volumes/192.168.1.55/documents
Obwohl die obige Antwort darauf ausgelegt ist, die in der Frage genannten Anforderungen zu erfüllen, ist die Antwort nicht sehr robust. Wenn zwei oder mehr Benutzer versuchen, auf dieselbe Freigabe zuzugreifen, führt die Verwendung der obigen Antwort zu einem Fehler. Im Grunde besteht das Problem eher darin, dass ein Benutzer nicht gleichzeitig denselben Einhängepunkt verwenden kann. Eine Möglichkeit, dieses Problem zu vermeiden, besteht darin, den Bereitstellungspunkt im $HOME/Volumes
Ordner statt im /Volumes
Ordner zu platzieren. Das unten angegebene neue Skript ist eine modifizierte Version des oben angegebenen ursprünglichen Skripts. Dieses neue Skript platziert den Bereitstellungspunkt im $HOME/Volumes
Ordner.
#!/bin/bash
mkdir -p "$HOME/Volumes/${1#*@}"
chmod 700 "$HOME/Volumes"
chmod +a "group:everyone deny delete" "$HOME/Volumes"
mount -t smbfs -o nodev,nosuid "$1" "$HOME/Volumes/${1#*@}"
mount | grep -q "$HOME/Volumes/${1#*@}" && open "$HOME/Volumes/${1#*@}"
Hinweis: Da /Volumes
der Ordner nicht verwendet wird, wird das Kennwort des Benutzers nicht vom Skript angefordert.
Wenn das Skript in der Datei gespeichert wird connect
, lautet die Zusammenfassung wie folgt.
connect //user[:password]@server/share
Ein Beispiel ist unten angegeben.
./connect //davidanderson@192.168.1.55/documents
In diesem Beispiel wäre der Einhängepunkt wie folgt.
"$HOME/Volumes/192.168.1.55/documents"
Zum Aushängen wäre die Zusammenfassung wie folgt.
diskutil unmount "$HOME/Volumes/server/share"
Ein Beispiel für den Befehl zum Unmounten ist unten angegeben.
diskutil unmount "$HOME/Volumes/192.168.1.55/documents"
-pm
zusammen? es ist nicht korrekt, es wirkt sich nur auf das neueste Verzeichnis aus. In diesem Fall durch$3
-pm700
ist kurz für -p -m 700
. Wenn dies ein Problem für Sie ist, werde ich einfach meine Antwort ändern. Ich beabsichtige, dass der Befehl nur das neueste (letzte) Verzeichnis ändert. Ich bin mir nicht sicher, ob das -m 700
überhaupt benötigt wird. Ich habe dies nur hinzugefügt, weil anscheinend der Finder und dies diskutil mount
tun.pm
Es funktioniert nicht wie erwartet - bitte sehen Sie sich diesen Beitrag und die beiden Antworten und die Kommentare von ihnen an - stackoverflow.com/questions/5786326/… - Also habe ich sudo mkdir -p -m 700 "/Volumes/$2/$3"
durch sudo mkdir -p "/Volumes/$2/$3"
und ersetztsudo chmod -R 700 "/Volumes/$2/$3"
chmod
Befehl und die -m
Option für den mkdir
Befehl nicht benötigt. Ich habe meine Antwort entsprechend aktualisiert. Dies würde auch die obigen Kommentare in Bezug auf diese Antwort irrelevant machen.diskutil unmount
und nicht nur umount
? wie andere Unix/Linux- Distributionen wie Ubuntu. Übrigens über die Freigabe /Volumes/something
, die von vielen Benutzern geteilt werden soll - für jeden Benutzer habe ich eine neue gemeinsame Gruppe erstellt - developer
- und mit chgrp
habe ich die primäre Gruppe geändert/Volumes/something
mount_smbfs
zu geändert mount -t smbfs
? Sind sie gleichwertig oder gibt es einen wichtigen Unterschied?mount_smbfs
, in der Folgendes steht: " Hinweis: Sie sollten immer den Befehl system mount verwenden und niemals mount_smbfs direkt aufrufen." Umgekehrt habe ich auch die Manpage für gelesen umount
, in der Folgendes steht: „ HINWEISE Aufgrund der komplexen und verwobenen Natur von Mac OS X kann umount häufig fehlschlagen. Es wird empfohlen, diskutil(1) (wie in „diskutil unmount /mnt'') stattdessen verwendet werden."Mit dem mount
Befehl können Sie einen mount_point angeben:
sudo mount -t smbfs smb://hostname/documents /Volumes/documents-foo
Wechseln Sie einfach documents-foo
zu dem gewünschten Namen und beachten Sie, dass dieses Verzeichnis bereits vorhanden sein muss (erstellen Sie es mit, sudo mkdir /Volumes/documents-foo
wenn dies nicht der Fall ist).
mount_nfs: can't resolve host: smb
undmount_nfs: no usable addresses for host: smb
mount
hätte mount -t smbfs
oder einfach sein sollen mount_smbfs
, aber das ist wahrscheinlich nicht das einzige Problem.sudo mount -t smbfs smb://hostname/documents /Volumes/documents-foo
Befehl wird bereitgestellt, aber der Benutzer kann nicht auf die Freigabe zugreifen, ohne sudo
. Durch Entfernen des sudo
und Eingabe des mount -t smbfs smb://hostname/documents /Volumes/documents-foo
Befehls wird die Freigabe bereitgestellt, ermöglicht aber auch den Benutzerzugriff ohne die Verwendung von sudo
.-t smbfs
. Ich wollte den Benutzernamen und das Passwort aus dem Befehl, mit dem ich getestet habe, herausarbeiten und zu viel entfernen. Ich werde das bearbeiten.
Marc Wilson
mmmmmm
Manuel Jordan
XXX
undXXX-1
- da es keine Garantie für die Sortierung gibt und später ein Verbindungsabbruch und -wiederaufbau passieren kann - die automatischen Pfade also nutzlos sind - möchte ich die explizite Kontrolle über die Namen übernehmen. Die andere Frage bezieht sich spezifischer auf Befehle. Hier ist entweder Finder oder Command offen. Oder vielleicht ein gemountetes Verzeichnis umbenennen. Der andere ist durch die Verbindung selbst.