如何从一台机器上运行ant脚本定位到另一台机器?

时间:2012-09-17 20:10:19

标签: java maven ant

我使用Ant执行以下操作。 我需要从机器A运行ant脚本,脚本有关于机器B的详细信息,如主机名,用户名,pwd,要下载的目录,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下载部分之间没有任何关联。任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:4)

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

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

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

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

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

答案 1 :(得分:1)

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

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

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