рüф*_*ффп 6 shell networking smb
我正在编写一个脚本 (Bash) 来将文件从我的本地 Linux 机器传输到 Windows 服务器。通常可以使用SAMBA共享访问 Windows 服务器,并且我能够使用mount.cifs带有正确 Windows 凭据的命令将文件夹安装到我的 Linux 机器上。
因为我不想提前挂载每个服务器,也不想使用动态挂载sudo(脚本以普通用户身份执行,而不是 root),我只是想知道是否可以通过其他方式访问服务器,例如TCP管道或类似的道路。
例如,在 Windows 下,我可以使用net use命令将服务器的文件夹安装到驱动器号,但也无需像这样安装:
c:> net use \\my-server.domain.com passwd123 /user:domain\myuser
c:> cp d:\myfiles.zip \\my-server.domain.com\d$\temp\destination
Run Code Online (Sandbox Code Playgroud)
如果我做一个net use,我可以看到打开的连接(没有分配字母):
Status Local Remote Network
-------------------------------------------------------------------------------
OK \\myserver.domain.net\IPC$
Microsoft Windows Network
The command completed successfully.
Run Code Online (Sandbox Code Playgroud)
我不想在 Windows Server 上安装 sshd 或 ftpd。我只想用SMB协议来做到这一点。作为后备,我会执行像安装sudo mount.cifs [options] /mnt/temp-folder和sudo umount /tmp/temp-folder文件的副本后。
Joh*_*ohn 16
您可以使用该smbclient程序为您提供类似于 FTP 的 Windows 文件共享界面,而无需在 Windows 机器上安装 FTP。
下面是一些例子:
将文件从本地 (unix/linux) 传输到 Windows:
smbclient //server.domain.org/d$ <password> -W domain.org -U <my-user> -c "put file-local.xml folder1\folder2\file.xml"
Run Code Online (Sandbox Code Playgroud)
将文件从 Windows 传输到 Linux:
有两个选项,第一个是使用命令“get”,smbclient第二个是最短的smbget::
1. smbclient: `smbclient //server.domain.org/d$ <password> -W domain.org -U <my-user> -c "get folder1\folder2\file.xml file-local.xml"`
2. smbget: `smbget -u <my-user> -p <password> -w domain.org -o destination-file.txt smb://server.domain.org/d$/folder1/folder2/source-file.txt`
Run Code Online (Sandbox Code Playgroud)