我正在编写一个脚本。它将运行一台 Linux 机器。其目标包括 Linux、Solaris 和 Windows。
我知道我可以使用 scp 在 *nix 之间复制文件。但是从 Windows 复制文件怎么样?
这些 Windows 是测试机器,不能指望它们安装特定的软件,因为操作系统可以经常重新安装。
答案1
使用桑巴。
Samba提供与Windows兼容的文件共享服务。
/srv/samba/sharename
您可以在 Linux 计算机上共享一个目录(例如),然后从 Windows 访问它,如下所示: \\linuxservername\sharename
。它不需要 Windows 端的任何额外软件。
大多数 Linux 发行版都包含 Samba。使用包管理器安装它,例如:
乌本图:
sudo apt-get install samba smbclient
苏西:
zypper samba
CentOS/RedHat:
yum install samba
要配置 Samba,请参阅:
苏西:http://doc.opensuse.org/documentation/html/openSUSE/opensuse-reference/cha.samba.html
CentOS/RedHat:http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-samba-configuring.html
或者搜索 Google 来找到适合您的发行版的指南。
请注意,如果你使用 Linux 防火墙,则可能需要对其进行配置,以接受对端口 137/tcp、138/tcp、139/tcp 和 445/tcp 的连接(请参阅这和这)。
在上面的描述中,Linux 计算机是 Samba 服务器,Windows 从中安装共享。
在下面的评论中您提到您希望实现转移过程的自动化。这可以通过反转角色来实现,这样 Windows 充当服务器,而 Linux 使用 连接到它smbclient
。
您smbclient
根本不需要挂载 Windows 共享。例如,要检索C:\Directory\file.txt
并将其复制到/tmp
Linux 计算机上,请执行以下操作:
smbclient '//windowsserver/c$' -c 'lcd /tmp; cd Directory; get file.txt' -U administrator%password
-c
要执行的命令。请参阅man smbclient
了解详情。
-U
访问共享的用户名和密码指定为username%password
根据您的需要进行修改并将其添加到您的脚本中。
答案2
我知道您说您不能指望安装特定的软件,但 Windows 的 SSH/SCP/SFTP 客户端不需要任何特殊安装;只有可执行文件可用。我一直使用的客户端是油灰与其同伴pscp
和psftp
工具一样,但我确信存在替代方案。pscp
并且psftp
可以完全从命令行驱动,因此非常适合自动化任务。它们甚至都有一个-batch
开关,描述为“禁用所有交互式提示”,几乎肯定可以利用。
由于您可能已经在服务器上安装并配置了 SSH/SCP/SFTP 服务器,因此这样就避免了仅仅为了复制这些文件而必须在任一主机上安装任何软件。
另一个好处可能是 PuTTY 是在宽松的许可下开源的,所以如果它不能按照你的需要开箱即用,那么让它按照你喜欢的方式运行应该相对容易。
答案3
我发现最简单的方法是使用斯姆格特
smbget smb://PATH/TO/FILE/test.txt
如果需要身份验证(如果没有提供密码,它将提示输入密码):
smbget smb://PATH/TO/FILE/test.txt -U "[email protected]%myPassword"
还可以指定文件的保存位置以及复制后的文件名:
smbget smb://PATH/TO/FILE/test.txt -U "[email protected]%myPassword" -o /LINUX/PATH/remote_test_file
答案4
我是一名CentOS 6
用户,所以我尝试了这个方法CentOS 6
使用以下方式安装 samba
[root@server ~]# yum 安装 samba
查询确认
[root@server ~]# rpm -qa samba samba-3.5.10-125.el6.i686
创建 Samba 用户。
[root@server ~]# useradd sambashare
现在使用 smbpasswd 命令为用户名 sambashare 创建 samba 密码。
[root@server ~]# smbpasswd -a sambashare 新的 SMB 密码: 重新输入新的 SMB 密码: 添加了用户 sambashare。
创建samba共享目录
[root@server ~]# mkdir /share
更改共享文件夹的所有权
[root@server ~]# chown -R sambashare:sambashare /share/
打开文件/etc/samba/smb.conf
并添加以下行。
[分享] 评论 = 分享 路径 = /共享 可写 = 是 有效用户 = sambashare
启动 samba 服务
[root@server ~]# 服务 smb 重启 关闭 SMB 服务:[确定] 启动 SMB 服务:[确定]
testparm
使用命令检查配置
。 。 [分享] 评论=分享 路径 = /共享 有效用户 = sambashare 只读 = 否
在 Windows 系统中输入run
现在输入 samba 用户名和密码
你已经完成了