Jak mogę zamontować udział SMB z wiersza poleceń?

78

Chciałbym zamontować udział sieciowy SMB z linii poleceń (terminal); jak miałbym to zrobić?

Używam Mac OS X 10.6.4.

Eyvind
źródło

Odpowiedzi:

71

Możesz to łatwo osiągnąć za pomocą mount_smbfs(który jest tak naprawdę opakowaniem mount -t smbfs):

mount_smbfs //user@SERVER/folder ./mntpoint

Opcjonalnie dodaj grupę roboczą:

mount_smbfs -W workgroup //user@SERVER/folder ./mntpoint

Możesz oczywiście zmienić ./mntpoint(na coś takiego /Volumes/smb).

Po wykonaniu tej czynności wystarczy przejść ./mntpointdo przeglądania danych.

Aby odmontować, użyj następującego polecenia:

umount ./mntpoint
Studer
źródło
2
Dostaję: `mount_smbfs: mount error: path: Input / output error ', podczas gdy montuje się przez Finder-> Connect to Server?
Ian Vaughan
Jak to zrobić, jeśli moja nazwa użytkownika zawiera znak @? Na przykład, gdy korzystam z konta Microsoft, takiego jak [email protected]? Próbowałem podać nazwę użytkownika w pojedynczym i podwójnym cudzysłowie, ale nie działa.
Yashvit,
2
Pojawia się ten błąd:mount_smbfs: could not find mount point /Volumes/Share: No such file or directory
Iulian Onofrei
11
Cytat z man mountsystemu OS X Yosemite:Note: You should always use the system mount command and never call mount_smbfs directly.
ssc
3
@Yashvit: Zmień „@” na „% 40”
WGroleau
69

Użyj open(1)polecenia i adresu URL:

open 'smb://username:password@server/share'

Plusy: Tworzy /Volumesdla ciebie punkt montowania .

Minusy: Wymaga działania Findera.

tlindner
źródło
4
wolę tę wersję do szybkich połączeń w mojej sieci lokalnej, tam wszyscy użytkownicy są znani, więc jest to prostsze polecenie niż użycie mount_smbfs - gdzie faktycznie miałem problemy z nieistniejącymi ścieżkami - podczas gdy gdybym musiał połączyć się z jakimś nowym serwerem za pomocą specjalny system plików, albo musiałbym wypróbować innego użytkownika lub chcieć innego punktu montowania - ok - ale jak często to się zdarza ... więc kciuk idzie w górę dla tego prostszego rozwiązania! Dobra robota! Ok, jestem maniakiem terminali, który wciąż ma Findera, ale to około 90% nas, prawda?
oprogramowanie hexerei
Nie Finderzawsze jest otwarty, przynajmniej jako proces?
Iulian Onofrei
1
@Iulian Onofrei: Nie, chyba że użytkownik jest zalogowany interaktywnie. Musiałem użyć mountpolecenia bezpośredniego w cronzadaniach. Użycie openpolecenia zakończy się niepowodzeniem, jeśli sesja interaktywna zniknie, np. Po awarii zasilania.
George,
Pamiętaj również, że openzawsze kończy działanie tak, jakby zakończyło się powodzeniem, jeśli przekazało polecenie do Findera, nawet jeśli polecenie później nie udało się połączyć z dyskiem sieciowym.
Jonathan Wren
23

Powinieneś rzucić okiem na pomoc wierzchowca:

man mount

Po bliższym przyjrzeniu się zobaczysz, że typ systemu plików to:

mount -t smbfs //username:password@MACHINENAME/SHARENAME /SomeLocalFolderOfChoice

Hasło (i teoretycznie nazwa użytkownika) są opcjonalne.

Wynikiem powyższego polecenia nie będzie danych wyjściowych (jeśli wszystko poszło dobrze), ale a cd /SomeLocalFolderOfChoicepowinno dać wyniki zdalne. Należy pamiętać, że SomeLocalFolderofChoice musi istnieć.

Możesz także użyć mount_smbfs, aby zastąpić mount -t smbfs.

Martin Marconcini
źródło
5

Co sprawiło, że zamontowałem je podczas rozruchu:

==> /etc/auto_master <==
#
# Automounter master map
#
+auto_master        # Use directory service
/net            -hosts      -nobrowse,hidefromfinder,nosuid
/home           auto_home   -nobrowse,hidefromfinder
/Network/Servers    -fstab
/-          -static
/-          auto_smb          # add this line <**********

==> /etc/auto_smb <==         # Create this if it doesn't exist <****
/(not Volumes)/Public   -fstype=smbfs,soft smb://(user):(password)@192.168.140.5/data/Public
/(not Volumes)/ WGroleau -fstype=smbfs,soft smb://(user):(password)@192.168.140.5/data/Students/wes_groleau

Z jakiegoś powodu ani krótka nazwa, ani nazwa FQDN serwera nie działały, więc użyłem polecenia ping (nazwa), aby uzyskać adres IP. Innymi słowy, DNS rozwiązałby nazwę, ale mount_smbfs nie mógł.

I nie mogłem umieścić punktu montowania w / Volumes, ponieważ bootowanie go usunęło.

Jedno dziwactwo: po tym, jak działało to dobrze przez kilka dni, przez dwa lub trzy dni, LibreOffice, Adobe Reader i Finder nie mogły znaleźć JEDNEJ z dwóch udziałów, ale powłoka i TextEdit nie miały problemu. Po dwóch lub trzech dniach w tajemniczy sposób znów zaczął działać.

Jeśli wykonasz te zmiany i nie chcesz ponownie uruchamiać komputera, możesz zamontować je za pomocą opcji „auto mount -vc”

Aktualizacja: Więcej dziwactw. (1) Istnieją tutaj dwa systemy WiFi, a jeden z nich nie ma dostępu do serwerów Windows. Kilka razy w tygodniu jeden lub oba routery ulegają awarii. Jeśli „dobry” zejdzie, a MacBook automatycznie połączy się z drugim, zamiast powiedzieć mi, że dysk jest w trybie offline, sterowniki SMB mówią „Zbyt wielu użytkowników”. (2) Kilka razy w tygodniu dostaję „odmowę dostępu” podczas próby dostępu do moich plików Windows. Zwykle trwa to około pół godziny, podczas której mogę przejść do paska systemu Windows i zalogować się i zobaczyć pliki o tym samym identyfikatorze i haśle.

WGroleau
źródło
Ponieważ w tym tygodniu została dwukrotnie oceniona, powinienem zaznaczyć, że napisano kilka wersji systemu MacOS temu.
WGroleau
4

Korzystanie z AppleScript jest wygodne, ponieważ przechowuje hasła w pęku kluczy. Funkcja Bash:

function mymount
{
    osascript <<EOF
mount volume "smb://user@fqdn1/volume1"
mount volume "smb://user@fqdn2/volume2"
EOF
}

Wywołaj „mymount” z bash, wprowadź hasła za pomocą standardowego okna podręcznego pęku kluczy, a jeśli wszystko pójdzie dobrze, żądane woluminy zostaną zamontowane w / Volumes.

wytten
źródło
To również doskonałe podejście. Nie podoba mi się zatwierdzona odpowiedź, ponieważ montuje się jako użytkownik root. Moim zdaniem te /usr/bin/osascript -e 'mount volume "smb://username:password@server/share"'open /Volumes; open 'smb://username:password@server/share'
jednowarstwowe
3

Dodałbym, że jeśli masz nazwę użytkownika w formie „grupa robocza \ nazwa użytkownika”, powinieneś ją zamontować w następujący sposób:

mount -t smbfs "//WORKGROUP;username:password@MACHINENAME/SHARENAME" /SomeLocalFolderOfChoice

Źródło: adaptując przykład stąd

matthieu
źródło
-1

stary post, ale co z takim montażem:

smb://no_username:password@MACHINENAME 

jak dyski wehikułu czasu?

BarclayVision
źródło
1
„z wiersza poleceń (terminal)” ... to nie jest poprawne polecenie bash. Zakładam, że masz na myśli Finder + ⌘K, aby połączyć się z serwerem, co nie jest tym, o co poprosił OP.
mattmc3