Надсилання файлів через Samba за допомогою командного рядка


17

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

Відповіді:


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 і сказати "Надіслати"?
Warren Young

У мене є конкретний проект, який я роблю там, де хочу, щоб все було автоматичним.
t0xic

12

curl підтримує smbпротокол з v7.40 : curl --upload-file /path/to/file.ext -u 'DOMAIN\Username' smb://172.16.17.52/ShareName/


Це працювало велике для мене curl --upload-file /home/me/local_file.txt --user "OurWindowsDomain\UserName:thePassword" smb://172.16.17.52/ShareName/Path/To/Remote/Dir. Я отримав список усіх доступних імен спільного доступу доsmbclient -L //172.16.17.52 -U UserName%thePassword -W OurWindowsDomain
Маттіас Браун,

це прекрасно!
Психозой

2

Дійсно працює це:

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

local-file - файл з локальної машини

віддалений файл - скопіюйте цей файл на віддаленій машині


0

Ще один спосіб, якщо частка вже змонтована запобіжником

Якщо ви використовуєте робочий стіл з папками, які вже змонтовані nautilus , caja або будь-яким іншим файловим менеджером , ви можете використовувати запобіжник (замість 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.