`

用Ant scp往远程linux传文件

    博客分类:
  • Ant
 
阅读更多

用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文件 中,并且这个文件也必须是存在的,否则会出现 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
  [
sshexecetc
  ...................

[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.

分享到:
评论
2 楼 northc 2018-04-20  
米饭军 写道
如果文件已存在怎样避免

应该会覆盖的
1 楼 米饭军 2018-04-13  
如果文件已存在怎样避免

相关推荐

    ant scp

    "ant scp" 是一个在Ant构建工具中执行SCP(Secure Copy)操作的扩展,用于在本地和远程服务器之间安全地传输文件。SCP是基于SSH协议的文件传输协议,广泛用于Linux和Unix系统,但也可以在支持SSH的Windows环境中使用...

    ant远程上传并部署tomcat

    标题中的“ant远程上传并部署tomcat”是指使用Apache Ant工具执行自动化构建任务,将本地的Web应用(如WAR或EAR文件)传输到远程Linux服务器的Tomcat应用服务器上进行部署,并随后重启Tomcat服务以使更改生效。Ant是...

    SpringMVC 多版本接口/IP访问控制/ANT打包发布到LINUX

    1. 使用SCP或SFTP将ANT打包生成的文件传输到Linux服务器的指定目录。 2. 使用SSH登录服务器,切换到部署目录。 3. 运行解压命令(如tar -zxvf 或 unzip)解压文件。 4. 如果是Tomcat等应用服务器,需要将解压后的...

    ANT和OpenSSH在Java Web数据安全传输中的应用.pdf

    ANT通过执行scp命令,利用SSH连接到远程服务器,并使用已授权的密钥对进行身份验证,然后加密传输文件。这种方式适用于定期的自动化部署,因为可以避免每次都输入密码。 2. SSH通道方式:这种方式使用SSH建立一个...

    LINUX考题.doc

    - `scp 192.168.0.36:/home/abc/1.txt 192.168.0.26:/home/szp`:将`192.168.0.36`上的`/home/abc/1.txt`文件复制到`192.168.0.26`的`/home/szp`目录。 - 另一种方法是先使用`ssh`连接到目标机器,再使用`sftp`...

    如何使用jenkins实现发布部分更新文件

    Samba 是一个开源的文件共享工具,可以将 Linux 系统中的文件共享到 Windows 系统中。 步骤 2:新建自由风格项目 接下来,我们需要新建一个自由风格项目。在 Jenkins 中,我们可以新建一个自由风格项目,名称可以...

    hudson学习笔记

    Hudson允许通过脚本或系统命令自定义这个流程,例如,通过Ant构建项目,然后使用SCP或RSYNC将结果传输到远程服务器。 总结来说,Hudson提供了一套完整的自动化流程,让开发团队能够高效地进行持续集成和自动部署。...

Global site tag (gtag.js) - Google Analytics