转自:http://www.blogjava.net/unmi/archive/2006/01/03/124033.html
现在我们安装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文件中,并且 这个文件也必须是存在的,否则会出现 com.jcraft.jsch.jschexception: reject hostkey: 192.168.122.180异常。执行linux下的命令时可以用分号";"把多个命令隔开,它们将会依次执行,而不需要写多个sshexec进行多 次连接,每次连接只执行一个命令。
该任务的执行后输出结果如下:
sshexec:
[sshexec] connecting to 192.168.122.180:22
[sshexec] backup
[sshexec] bin
[sshexec] boot
[sshexec] dev
[sshexec] etc
...................
[scp任务]
1.拷贝单个文件到远端服务器
<scp file="c:/cmd.txt" todir="root:123456@192.168.122.180:/tmp" trust="true"/>
或
<scp file="c:/cmd.txt" todir="root@192.168.122.180:/tmp" password="123456" trust="true"/>
2.拷贝远端文件本地
<scp file="root:123456@192.168.122.180:/tmp/cmd.txt" todir="d:/my-app" trust="true"/>
3.拷贝远端目录到本地,将以递归形式操作
<scp file="root:123456@192.168.122.180:/tmp/*" todir="d:/my-app" trust="true"/>
4.拷贝本地目录中的内容到远端,递归形式,但不在服务器上建立my-app目录
<scp todir="root:123456@192.168.122.180:/tmp/" trust="true">
<fileset dir="d:/my-app"/>
</scp>
5.拷贝一系列的文件到远端,会建立相应的层次目录,不建立my-app目录
<scp todir="root:123456@192.168.122.180:/tmp" trust="true">
<fileset dir="d:/my-app">
<include name="**/*.java" />
</fileset>
</scp>
或
<scp todir="root:123456@192.168.122.180:/tmp" trust="true">
<fileset dir="d:/my-app" excludes="**/*.java"/>
</scp>
最后一个任务的执行输出结果如下(其他略):
scp:
[scp]connecting to 192.168.122.180:22
[scp] sending: cmd.txt : 0
[scp] file transfer time: 0.0 average rate: ? b/s
[scp] sending: pom.xml : 852
[scp] file transfer time: 0.0 average rate: ∞ b/s
[scp] sending: application.properties : 142
[scp] file transfer time: 0.0 average rate: ∞ b/s
[scp] sending: application.properties : 45
[scp] file transfer time: 0.0 average rate: ∞ b/s
[scp] sending: test.properties : 0
[scp] file transfer time: 0.02 average rate: 0.0 b/s
[scp] sending: application.properties : 153
[scp] file transfer time: 0.0 average rate: ∞ b/s
[scp] sending: application.properties : 45
[scp] file transfer time: 0.0 average rate: ∞ b/s
[scp] done.
[unmi 后注]前面的内容很多都是直接在这里可视化编辑的,如改变字体颜色,大小什么的,这样做发现生成的html垃圾代码实在是太多,以后对于内容稍稍丰富的文 章还是在外部编辑器如dreamweaver编辑好了再贴到这里好一点,并且更能作本地备份,以免意外,当然简单内容这里直接写也无妨。
当然 还有
<target name="uploadToServer " description="并行上传文件">
<echo> ${ "echo" } </echo>
<parallel threadCount='2'>
<!--sshexec -->
<sequential>
<sshexec host="${server}" username="${ user}" password="${ }" command="${ }${DSTAMP}" trust="true" failonerror="false" />
</sequential>
<!--scp -->
<scp todir="${ user}:${ pwd}@${ server1}:${ path}" trust="true" verbose="true">
<fileset dir="${ dir}/">
<include name="${file.name}" />
</fileset>
</scp>
</parallel>
</target>
分享到:
相关推荐
SSH是一种网络协议,用于安全地在不安全的网络上执行命令和传输数据,而SCP是基于SSH的文件传输协议,提供了安全的文件拷贝功能。在Ant中集成SSH和SCP能力,可以方便地实现远程服务器的部署、文件传输等操作。 首先...
标题提到的"ant下使用ssh或者scp所需要的包"指的是在Ant任务中集成SSH和SCP功能所依赖的Java库。在这个场景下,`jscp`和`j2ssh`是两个关键的Java库,它们提供了与SSH和SCP交互的API,使得开发者能够在Ant脚本中执行...
SCP是基于SSH协议的文件传输协议,广泛用于Linux和Unix系统,但也可以在支持SSH的Windows环境中使用。 在Ant中,通常使用`scp`任务来实现这个功能,它依赖于JSCH库(JavaScript SSH 2 Library),这是一个用Java...
标题“ant使用scp上传文件问题...总之,解决“ant使用scp上传文件问题”需要对Ant构建脚本、SCP协议、SSH服务器配置以及可能的权限和网络问题有深入的理解。通过排查上述问题点,并参考相关文档,通常能解决此类问题。
ant运行scp以及sshexec任务所必须的jar包,这是optional的,所以ant默认不会有的,需要自己加上
SSH2集成了Secure Copy (SCP)、Secure File Transfer Protocol (SFTP)、远程命令执行等功能,是开发人员在部署和管理分布式系统时的重要工具。而Ant是一个由Apache软件基金会开发的Java构建工具,它使用XML来定义...
《使用Ant进行Web开发》是Steve Holzner的著作《The Definitive Guide, 2nd Edition》的第二部分,主要讲述了如何利用Apache Ant工具进行Web应用程序的打包和部署。在第一部分中,作者介绍了war、cab、ear以及jspc等...
这样,开发者就可以利用Ant的任务来调用JSch的功能,比如创建一个`sshexec`任务来执行远程命令,或者使用`scp`任务来复制文件到远程服务器。 `ant.license.txt`文件通常包含开源库的许可证信息,对于`ant-jsch-1.6....
ANT通过执行scp命令,利用SSH连接到远程服务器,并使用已授权的密钥对进行身份验证,然后加密传输文件。这种方式适用于定期的自动化部署,因为可以避免每次都输入密码。 2. SSH通道方式:这种方式使用SSH建立一个...
在Ant中使用`scp`任务时,你需要这个jar包作为依赖,以便能够通过SSH连接到远程服务器并执行文件传输。JSch不仅实现了SSH2的连接,还包括了密钥管理、会话管理、文件传输等功能。 为了在Ant中使用`scp`任务,你需要...
由于Ant本身并不内置SCP或SFTP支持,所以需要额外添加jsch.jar到Ant的类路径(通常是`$ANT_HOME/lib`)以支持SSH连接。 4. **Tomcat**:Tomcat是一款开源的Servlet容器,常用于运行Java Web应用。在这里,它是部署...
【jsch_for_apacheAnt】是一个专为Apache Ant构建工具设计的Java库,它使得在Ant脚本中实现SSH(Secure Shell)连接和操作变得更加便捷。JSch是Java Secure Channel的缩写,它是一个纯Java实现的SSH2库,能够支持...
JSch是一个纯Java实现的SSH2库,允许Java程序执行Secure Copy (SCP)、Secure Shell (SSH) 和SFTP协议,常用于远程文件传输和操作。 3. **build.xml**:这是Ant的构建脚本,定义了一系列目标(target)和任务(task...
- 使用SSH协议连接至远程服务器,并通过SCP命令将打包的应用程序安全传输到服务器。 - **HTTP下载** - 提供一个HTTP链接,让用户能够通过浏览器直接下载打包的应用程序。 - **多渠道发布** - 结合以上多种方式...
总结,"ant-jsch-1.6.2.jar.zip"是一个用于集成Ant和JSch的工具包,它提供了在Ant构建脚本中执行SSH操作的能力。开发者可以利用它实现自动化部署、远程系统监控等多种功能。尽管它属于较早的版本,但其稳定性和兼容...
1. 使用SCP或SFTP将ANT打包生成的文件传输到Linux服务器的指定目录。 2. 使用SSH登录服务器,切换到部署目录。 3. 运行解压命令(如tar -zxvf 或 unzip)解压文件。 4. 如果是Tomcat等应用服务器,需要将解压后的...
- 使用`<scp>`任务(SSH Secure Copy)将WAR文件上传到远程服务器。 - 使用`<sshexec>`任务执行远程命令,如`cd /path/to/tomcat/webapps && mv warfile.war appname.war`,然后启动或重启Tomcat服务。 5. **运行...
自从法现 SSH 可以执行远端命令后,ftp 软件也渐渐很少用了。 每次更新服务器代码,都要打包、上传、登录到服务器修改文件权限、更新 Cache 等等,又慢又容易出错,所以做成脚本,一次帮我搞定,自己就点上一根烟坐...
总的来说,"ant-jsch-1.6.4.jar.zip"提供的工具集为Java开发者提供了便利,使他们能够在Ant构建流程中方便地使用SSH连接进行远程操作,提升了项目开发和运维的效率。同时,遵循开源许可协议的使用,也鼓励了社区间的...
ant 的 ssh jar 包, 这样就能使用scp进行上传了。 把这个jar放到ant 的lib 目录里面