I am writing a script (Bash) to transfer files from my local Linux machine to Windows servers.
The Windows servers are accessible normally using the SAMBA shares, and I am able to mount a folder to my Linux machine using the mount.cifs
command with the proper Windows credentials.
Because I do not want to mount every server in advance nor mounting dynamically using sudo
(the script is executed as a normal user, not root), I am just wondering if the server can be accessed by another means, like a TCP pipe or a similar way.
For example, under Windows I can mount my server's folder to a drive letter using the net use command, but as well without having being mounted like this:
c:> net use \\my-server.domain.com passwd123 /user:domain\myuser
c:> cp d:\myfiles.zip \\my-server.domain.com\d$\temp\destination
And if I make a net use
, I can see the open connection (without letter assigned):
Status Local Remote Network
-------------------------------------------------------------------------------
OK \\myserver.domain.net\IPC$
Microsoft Windows Network
The command completed successfully.
I do not want to install sshd nor ftpd on the Windows Server. I am looking to do it only with the SMB protocol. As a fallback I will execute a mount like sudo mount.cifs [options] /mnt/temp-folder
and sudo umount /tmp/temp-folder
after the copy of the files.
Best Answer
You can use the
smbclient
program to give you an FTP-like interface to the Windows file share without having to install FTP on the Windows machine.Here follows some examples:
Transfer file from local (unix/linux) to Windows:
Transfer file from Windows to Linux:
There are two options, the first is using the command 'get' with
smbclient
and a the second, a shortest one:smbget
: