`

用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  
如果文件已存在怎样避免

相关推荐

    Linux使用scp命令进行文件远程拷贝详解

    Linux的scp命令可以在Linux服务器之间复制文件和目录。 使用语法: scp [参数] [源路径] @IP:/目标路径 scp 参数如下: -1: 强制scp命令使用协议ssh1 -2: 强制scp命令使用协议ssh2 -4: 强制scp命令只使用IPv4...

    ant scp

    以下是使用Ant进行SCP传输的基本步骤: 1. **配置Ant**: 首先,确保Ant的lib目录下包含了上述提到的所有jar文件,这样Ant才能识别并使用SCP任务。 2. **定义属性**: 在Ant的构建文件(build.xml)中,定义需要的...

    ant使用scp上传文件问题

    标题“ant使用scp上传文件问题”涉及到的是在Java构建工具Ant中使用Secure Copy (SCP)协议来传输文件的场景。SCP是一种基于SSH的安全文件传输协议,常用于在不同主机之间安全地复制文件。在这个问题中,用户可能遇到...

    不需要远程传输文件Linux如何关闭scp和sftp命令.docx

    scp命令是用于在两台主机之间传输文件的命令,通常用scp命令通过ssh获取对方Linux主机文件时,需要输入密码确认。方法类似于ftp命令,但是scp命令更加安全。 禁止scp命令 要禁止scp命令,需要删除openssh-clients...

    Linux批量scp命令执行工具 可批量对多个Linux主机执行传输文件命令 方便省力 适合统一化管理Linux服务器

    在日常运维工作中,经常需要在多台远程Linux主机之间传输文件,这时,手动执行scp命令会显得效率低下且容易出错。为了解决这个问题,就有了“Linux批量scp命令执行工具”,它能够帮助管理员批量地对多个Linux主机...

    linux采用scp命令拷贝文件到本地,拷贝本地文件到远程服务器的方法

    如下所示: ...以上这篇linux采用scp命令拷贝文件到本地,拷贝本地文件到远程服务器的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文

    scp.zip批量远程传输文件

    标题中的“scp.zip批量远程传输文件”涉及到的是Linux或Unix系统中的安全拷贝协议(Secure Copy,简称scp),它用于在不同主机之间安全地复制文件。scp基于SSH(Secure Shell)协议,能确保数据在传输过程中的安全性...

    使用scp获取远程linux服务器上的文件 linux远程拷贝文件

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。 二、scp有什么用? 1、我们需要获得...

    python执行scp命令拷贝文件及文件夹到远程主机的目录方法

    Python执行SCP命令是一种在编程中实现自动化文件传输到远程服务器的常见方法,特别是在需要脚本化或批量处理任务时。SCP(Secure Copy)是基于SSH协议的安全文件传输工具,它允许用户通过加密连接将文件从本地复制到...

    linux上下传文件及桌面管理端

    "Linux上下传文件及桌面管理端"工具提供了这样的便利性,使得用户能够轻松地在本地和远程Linux系统之间移动文件,同时也方便了对Linux桌面环境的管理。下面我们将详细探讨相关的知识点。 1. **SSH(Secure Shell)*...

    通过秘钥实现scp不输入密码传送文件

    使用SCP命令将`id_rsa.pub`文件复制到目标主机的`.ssh/authorized_keys`文件中: ```bash scp ~/.ssh/id_rsa.pub user2@target_host:/home/user2/.ssh/authorized_keys ``` 这里,`user2`是目标主机上的用户名,`...

    Linux远程连接工具——SCP.

    Linux远程连接工具——SCP.一款优秀的远程连接Linux工具。

    使用Ant进行ssh和scp操作

    要使用Ant进行SSH和SCP操作,你需要在Ant构建文件(build.xml)中定义相应的任务。J2SSH Ant扩展提供了一些任务,如`sftp`、`sshexec`和`scp`。以下是一些基本示例: 1. `scp`任务:用于复制文件到远程主机。你需要...

    使用scp在linux主机之间复制文件目录

    ### 使用scp在Linux主机之间复制文件目录 #### scp命令详解 在Linux环境下,scp命令是一种基于SSH协议的安全文件传输工具,常用于在不同主机间安全地传输文件或目录。scp命令不仅提供了简单易用的接口,而且还具备...

    ant知识汇总 | ant scp 需要用到的jar包

    NULL 博文链接:https://liudaoru.iteye.com/blog/265705

    Linux scp命令用法及实例分享

    scp就是secure copy,一个在linux下用来进行远程拷贝文件的命令。 有时我们需要获得远程服务器上的某个文件,该服务器既没有配置ftp服务器,也没有做共享,无法通过常规途径获得文件时,只需要通过简单的scp命令便可...

    解决linux scp无需密码问题

    - 或者可以使用SCP命令直接将公钥文件传输至远程服务器并追加到`authorized_keys`文件中: ``` scp ./id_rsa.pub.A B的IP:/root/.ssh cat id_rsa.pub.A &gt;&gt; authorized_keys ``` - 如果之前没有创建`authorized...

    Linux之间文件远程复制.docx

    Linux scp 命令是 Linux 系统下的一种安全的远程文件拷贝命令,基于 ssh 登陆协议,用于在 Linux 服务器之间进行文件和目录的复制。scp 是 secure copy 的缩写,顾名思义,scp 命令可以对文件和目录进行安全的远程...

    ssh,scp 连接远程ssh非22端口的服务器方法

    而SCP(Secure Copy Protocol)则是基于SSH协议实现的安全拷贝工具,主要用于在本地与远程服务器之间或者两台远程服务器之间传输文件。 #### 二、SSH与SCP默认端口及修改 SSH和SCP默认监听的端口号为22。出于安全...

Global site tag (gtag.js) - Google Analytics