日期:2014-05-16  浏览次数:20682 次

用Ant scp往远程linux传文件

用ant scp往远程linux传文件

1、下载jsch.jar

http://sourceforge.net/projects/jsch/files/jsch.jar/

2、保存一下内容,命名为build.xml在d:\antHome目录下

<project name="AntAutoDeploy" basedir="../" default="scp">
??? <target name="scp">
??????? <scp file="myfile.txt" todir="test@172.10.10.98:/home/" trust="true" password="123456" />
??? </target>
</project>

3、把jsch.jar复制到d:\antHome下

4、执行 ant -lib d:\antHome

?

现在我们安装Linux的时候通常考虑到安全因素(默认情况下)是不打开telnet服务的,而ssh服务是有的,ant很早就支持telnet,但要求我们在Linux下要安装telnet-server,并要启用该服务。

还好自Ant1.60开始支持了SSH 及SCP 操作了,早在Ant之前若要支持SSH、SCP、SFTP等任务就必须下载j2ssh的j2ssh-ant.jar和j2ssh-core.jar(在http://www.sourceforge.net的j2ssh下有下载)。现在可以使用Ant提供的Sshexec和scp任务,由$ANT_HOME/lib/ant-jsch.jar提供支持,但是同样你也要在http://www.jcraft.com/jsch/index.html下载一个依赖包jsch-0.1.24.jar(文件名因版本而不同),jsch同样也是http://www.sourceforge.net下的一个项目。

你需要把下载的jsch-0.1.24拷贝到$ANT_HOME/lib下,如果是Eclipse下的Ant环境必须在Window->Preferences->Ant->Runtime->Classpath中加入jsch-0.1.24。

JSch是一个SSH2的纯Java实现
JSch允许你连接到sshd server并采用端口映射, X11 映射; Scp文件传输等,你可以把集成JSch提供的功能到你自己的Java项目中,JSch 的授权方式为 BSD形式。

下面是用JSch完成Sshexec和scp两个任务的最简单例子,如果需要更详细的内容,请参考Ant用户手册

[Sshexec任务]
<BR><target?name="sshexec">
??????<sshexec?host="192.168.122.180"?username="root"??password="123456"
?????????trust="true"?command="cd?/;ls"/>
</target>

注意上面的trust属性一般设置为true, 如果为默认值false时,那么就要求你所连接的host必须存在于你的knownhosts文件 中,并且这个文件也必须是存在的,否则会出现 co