0

有什么方法可以制作一个脚本,将文件从 Unix 驱动器复制到 Windows 驱动器上?

4

4 回答 4

3

我一直使用安全副本(SCP)手动执行此操作。SCP 已经安装在大多数 Unix 机器上。在我的 PC 上,我安装了PuTTY,它是一个适用于 Windows 的安全终端应用程序,还包含一个安全复制实用程序。

当您从 Windows 命令行手动执行安全复制时,您将 Unix 用户名放入命令行命令,但随后您必须在提示符处输入密码,因此它是交互式的。但我也考虑过从脚本或批处理文件中执行此操作。在这种情况下,您需要在适当的机器上创建和安装私钥和公钥。我创建了适当的密钥并将它们安装在 Windows 和 Unix 机器上,然后我再次手动执行 Windows 命令行安全复制,当时它没有要求我输入密码。因此,这是您完成任务的一种方式。不过,我敢肯定还有很多其他方法。

于 2009-02-20T14:52:12.127 回答
2

是的,只要执行脚本的操作系统可以从 Unix 驱动器读取并写入 Windows 驱动器。由于这是标记为 vbscript,我假设您在 Windows 上运行,因此您可能希望查看类似内容以访问 Windows 的 Unix 文件系统(尽管那是 Linux ext 驱动程序)。然后它只是运行一个标准的复制功能来完成你的任务。

于 2009-02-20T14:50:23.537 回答
2

既然你有一个 Samba 标签,你是在谈论从 Unix 机器上安装一个网络共享到你的 Windows 机器上吗?

如果是这样,它将被视为普通网络驱动器,您将能够通过共享复制您拥有权限的任何内容。

于 2009-02-20T14:57:41.227 回答
1

我会使用期望工具。

这是一个例子,如何上传

  • /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
于 2013-10-08T13:07:36.150 回答