使用命令行在Samba上发送文件


17

我想知道是否有一种方法可以使用Samba通过命令行将项目发送到客户端计算机(我需要从Samba服务器发送文件)。我知道我可以一直使用,scp但是首先我想知道是否可以使用Samba做到这一点。谢谢!

Answers:


19

使用smbclient,Samba附带的程序:

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

有许多标志,例如-U允许远程用户名与本地用户名不同。

在将Samba拆分为多个二进制软件包的系统上,您可能已经安装了Samba服务器,但仍然丢失smbclient。在这种情况下,请检查你的包库名为包smbclientsamba-client或类似的。


我不断收到Connection to [IP] failed (Error NT_STATUS_CONNECTION_REFUSED)
t0xic 2015年

当我在//server上面写的时候,我的意思是您所说的客户端计算机,在这种情况下,它充当服务器。它需要具有一个通过SMB共享的文件夹或驱动器才能正常工作。
沃伦·杨

哦,那对我来说真的行不通。我想我只会用scp。尽管如此,还是谢谢!
t0xic

@ fleebow8:您可以在客户端计算机上安装第三方SCP服务器,但是不能右键单击Windows资源管理器中的文件夹并说“共享”?
沃伦·杨

我正在执行一个特定的项目,我希望所有这些东西都是自动化的。
t0xic

12

从v7.40开始, curl支持该smb协议: 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
Matthias Braun

太棒了!
Psychozoic

2

真正的工作将是这样的:

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

本地文件-来自本地计算机的文件

远程文件-复制到远程计算机上的此文件


0

如果共享已通过保险丝安装,则采用另一种方式

如果您正在运行某些桌面,并且其中的共享库已由nautiluscaja或任何其他文件管理器安装,则可能正在使用保险丝(而不是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-Debiancurl 7.64.0没有为我工作(Linux kali 4.19.0-kali4-amd64

这样做:

smbmap -H server -u username -p password --upload local-filename share\\remote-filename
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.