我正在编写一个脚本 (Bash) 将文件从本地 Linux 计算机传输到 Windows 服务器。 Windows 服务器可以正常访问桑巴舞共享,并且我可以使用mount.cifs
具有正确 Windows 凭据的命令将文件夹安装到我的 Linux 计算机。
因为我不想提前安装每台服务器,也不想使用动态安装sudo
(脚本以普通用户身份执行,而不是 root),所以我只是想知道是否可以通过其他方式访问服务器,例如传输控制协议管道或类似的方式。
例如,在 Windows 下,我可以使用以下命令将服务器的文件夹安装到驱动器号净使用命令,但也无需像这样安装:
c:> net use \\my-server.domain.com passwd123 /user:domain\myuser
c:> cp d:\myfiles.zip \\my-server.domain.com\d$\temp\destination
如果我创建一个net use
,我可以看到打开的连接(没有分配字母):
Status Local Remote Network
-------------------------------------------------------------------------------
OK \\myserver.domain.net\IPC$
Microsoft Windows Network
The command completed successfully.
我不想在 Windows Server 上安装 sshd 或 ftpd。我只想用中小企业协议。作为后备措施,我将在文件副本之后sudo mount.cifs [options] /mnt/temp-folder
执行类似的安装。sudo umount /tmp/temp-folder
答案1
您可以使用该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"
将文件从 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`
答案2
你可以尝试类似wput [options] [file]... [url]... ftp://[username[:password]@]hostname[:port][/[path/][file]]
或wget