我使用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下载部分之间没有任何关联。任何人都可以帮忙吗?
答案 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客户端。下载你需要的东西。