0

我已经使用 Ant 执行了以下操作。我需要从机器 A 运行 ant 脚本,该脚本包含有关机器 B 的详细信息,例如主机名、用户名、密码、要下载的目录、ftp 详细信息等,当脚本从机器 A 运行时,它应该使用 ftp 下载 somefile在机器 B 中。

我已经在脚本中提供了有关机器 B 的详细信息,但是当我运行脚本时,它会在机器 A 而不是机器 B 中下载文件。我缺少什么?或者有人可以帮我写代码吗?

提前致谢。

这是代码:

在 Maven 中,我定义了机器 B 的详细信息:

<host>MachineB</host>
<host.username>user</host.username>
<host.password>pwd</host.password>

在 build.xml

<target name="Todownload_file" <mkdir dir="${download_dir}" />

    <ftp action="get" server="download_server_details" userid="user" password="pwd" remotedir="path">
        <fileset dir="${download_dir}">
            <include name="${file_name}"/>
        </fileset>
    </ftp>
</target>

正如我在评论中所说,机器 b 详细信息和 ftp 下载部分之间没有链接。有人可以帮忙吗?

4

2 回答 2

4

您可以使用 sshexec 任务来运行远程命令,并且可以使用 sep 从/向机器 B 复制/推送文件。有几种方法可以在概念上做到这一点。

第一种方法:将文件从远程 ftp 站点下载到机器 A,然后使用 scp 任务将其复制到机器 B。最后使用 sshexec 在机器 B 上运行该文件。

第二种方法:通过 sshexec 从机器 A 直接在机器 B 上运行 curl 或 ftp 命令,将文件直接下载到机器 B。然后运行另一个 sshexec 任务来执行机器 B 上的文件。

第三种方法:编写一个可在机器 B 上运行的脚本 (workflowscript.sh)(Mac 的 bash/Linux powershell/Windows 的 VBScript),并在此脚本中放置逻辑以通过 ftp 或 curl 执行下载其他脚本或任何。在机器 A 上使用 scp 将 workflowscriipt.sh 复制到机器 B,然后使用 sshexec 执行它。

在上述所有方法中,您需要知道什么在哪里运行。机器 A 只是向机器 B 推送文件或发送远程命令,机器 B 完成所有工作。

于 2012-09-17T21:47:48.027 回答
1

您可以使用以下命令在远程机器 () 中运行命令/脚本:

ssh <remote_user>@<remote_server> "<command_1>; <command_2>; ... <command_n>"

这些命令之一可以是“gftp”,一个命令行 FTP 客户端。下载你需要的东西。

于 2012-09-17T20:43:24.177 回答