有什么方法可以制作一个脚本,将文件从 Unix 驱动器复制到 Windows 驱动器上?
4 回答
我一直使用安全副本(SCP)手动执行此操作。SCP 已经安装在大多数 Unix 机器上。在我的 PC 上,我安装了PuTTY,它是一个适用于 Windows 的安全终端应用程序,还包含一个安全复制实用程序。
当您从 Windows 命令行手动执行安全复制时,您将 Unix 用户名放入命令行命令,但随后您必须在提示符处输入密码,因此它是交互式的。但我也考虑过从脚本或批处理文件中执行此操作。在这种情况下,您需要在适当的机器上创建和安装私钥和公钥。我创建了适当的密钥并将它们安装在 Windows 和 Unix 机器上,然后我再次手动执行 Windows 命令行安全复制,当时它没有要求我输入密码。因此,这是您完成任务的一种方式。不过,我敢肯定还有很多其他方法。
是的,只要执行脚本的操作系统可以从 Unix 驱动器读取并写入 Windows 驱动器。由于这是标记为 vbscript,我假设您在 Windows 上运行,因此您可能希望查看类似的内容以访问 Windows 的 Unix 文件系统(尽管那是 Linux ext 驱动程序)。然后它只是运行一个标准的复制功能来完成你的任务。
既然你有一个 Samba 标签,你是在谈论从 Unix 机器上安装一个网络共享到你的 Windows 机器上吗?
如果是这样,它将被视为普通网络驱动器,您将能够通过共享复制您拥有权限的任何内容。
我会使用期望工具。
这是一个例子,如何上传
/local/path/to/file
到
\\HOST\SHARE\remote\path\to\file
domain\user
使用密码进行身份验证password
:
expect <<<EOF
set timeout 10
spawn smbclient //HOST/SHARE "-Udomain\\user%password"
expect {
"smb: \\\\\\\\>" {
send "cd /remote/path/to\r"
expect {
"NT_STATUS_OBJECT_NAME_NOT_FOUND" {exit 1}
"smb: *>" {
set timeout -1
send "put /local/path/to/file file\r"
expect {
"putting file " {
expect "smb: *>" {exit 0}
}
"smb: *>" {exit 1}
}
}
}
}
}
# Timeout
exit 1
EOF