I was wondering if there is a way to use Samba to send items to a client machine via the command line (I need to send the files from the Samba server). I know I could always use
scp but first I was wondering if there is a way to do it with Samba. Thanks!
smbclient, a program that comes with Samba:
$ smbclient //server/share -c 'cd c:/remote/path ; put local-file'
There are many flags, such as
-U to allow the remote user name to be different from the local one.
On systems that split Samba into multiple binary packages, you may have the Samba servers installed yet still be missing
smbclient. In such a case, check your package repository for a package named
samba-client, or similar.
curl supports the
smb protocol since v7.40:
curl --upload-file /path/to/file.ext -u 'DOMAIN\Username' smb://172.16.17.52/ShareName/
Really working will be this:
$ smbclient //server/share -c 'cd c:/remote/path ; put local-file remote-file'
local-file - file from local machine
remote-file - copy to this file on remote machine
Another way if the share is already mounted by fuse
If you are running some desktop with shares already mounted by nautilus, caja or any other file manager, you could be using fuse (instead of smbclient).
If so, you may find some mountpoints at:
ls -l /run/user/$UID/gvfs/ drwx------ 1 charlie charlie 0 Feb 2 10:04 smb-share:server=hostname,share=documents
Yes this is a mountpoint!
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
And you could use it as a regular filesystem.
cp $HOME/myfile \ /run/user/$UID/gvfs/smb-share:server=hostname,share=documents/destpath/
smbclient Version 4.9.5-Debian and
curl 7.64.0 didn't work for me (
Linux kali 4.19.0-kali4-amd64)
smbmap -H server -u username -p password --upload local-filename share\\remote-filename