Отправка файлов через Samba из командной строки

17

Мне было интересно, есть ли способ использовать Samba для отправки элементов на клиентский компьютер через командную строку (мне нужно отправить файлы с сервера Samba). Я знаю, что всегда мог использовать, scpно сначала мне было интересно, есть ли способ сделать это с помощью Samba. Благодарность!

t0xic
источник

Ответы:

19

Используйте smbclientпрограмму, которая поставляется с Samba:

$ smbclient //server/share -c 'cd c:/remote/path ; put local-file'

Есть много флагов, например, -Uчтобы имя удаленного пользователя отличалось от локального.

В системах, которые разбивают Samba на несколько бинарных пакетов, у вас могут быть установлены серверы Samba, но они все еще отсутствуют smbclient. В таком случае, проверьте репозиторий пакетов для пакета с именем smbclient, samba-clientили аналогичным.

Уоррен Янг
источник
Я продолжаю получатьConnection to [IP] failed (Error NT_STATUS_CONNECTION_REFUSED)
t0xic
Когда я писал //serverвыше, я имею в виду то, что вы называете клиентской машиной, которая в данном случае выступает в роли сервера. Это должно иметь папку или диск, общий доступ через SMB, чтобы это работало.
Уоррен Янг
Ох ... это не будет работать для меня. Я думаю, я просто буду использовать scp. В любом случае, спасибо!
t0xic
@ fleebow8: Вы можете установить сторонний сервер SCP на клиентских компьютерах, но не можете щелкнуть правой кнопкой мыши папку в проводнике Windows и сказать «Поделиться»?
Уоррен Янг
У меня есть конкретный проект, который я делаю, где я хочу, чтобы все было автоматически.
t0xic
12

curl поддерживает smbпротокол начиная с версии 7.40 : curl --upload-file /path/to/file.ext -u 'DOMAIN\Username' smb://172.16.17.52/ShareName/

eadmaster
источник
Это отлично сработало для меня curl --upload-file /home/me/local_file.txt --user "OurWindowsDomain\UserName:thePassword" smb://172.16.17.52/ShareName/Path/To/Remote/Dir. Я получил список всех доступных sharenames сsmbclient -L //172.16.17.52 -U UserName%thePassword -W OurWindowsDomain
Matthias Braun
это потрясающе!
Психозой
2

По-настоящему работать будет так:

$ smbclient //server/share -c 'cd c:/remote/path ; put local-file remote-file'

local-file - файл с локальной машины

remote-file - скопировать в этот файл на удаленной машине

Джек Беловзерофф
источник
0

Другой способ, если общий ресурс уже установлен предохранителем

Если у вас есть какой-то рабочий стол с уже смонтированными общими папками с помощью nautilus , caja или любого другого файлового менеджера , вы можете использовать fuse (вместо smbclient ).

Если это так, вы можете найти некоторые точки монтирования на:

ls -l /run/user/$UID/gvfs/
drwx------ 1 charlie charlie 0 Feb  2 10:04 smb-share:server=hostname,share=documents

Да, это точка монтирования !

df -h /run/user/$UID/gvfs/*
Filesystem      Size   Used  Avail  Use% Mounted on
gvfsd-fuse      16.2T  3.6T  12.6T   59% /run/user/1000/gvfs

И вы можете использовать его как обычную файловую систему.

cp $HOME/myfile \
    /run/user/$UID/gvfs/smb-share:server=hostname,share=documents/destpath/
техно
источник
0

smbclient Version 4.9.5-Debianи curl 7.64.0не работал для меня (Linux kali 4.19.0-kali4-amd64 )

Это сделал:

smbmap -H server -u username -p password --upload local-filename share\\remote-filename
chefarov
источник