ant使用ssh和linux交互 如:上传文件

通过ANT工具及JSCH库实现自动化部署jar包至Linux服务器,避免手动复制,提升效率并确保安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:

ant生成jar包之后,每次都要往目标机器上拷贝部署,真是难受。

本机又是Windows ,运行机器是linux,如何办?来个共享?安装samba?

高人指点,采用ftp,要去配置个ftp还是不爽的事情,想既然ant支持ftp肯定考虑支持sftp等关于ssh的功能,一查发现,果然还是支持的。兴奋!

一、寻找资源文件

看ant的文档:

http://ant.apache.org/manual/Tasks/scp.html

在依赖的jar包列表 http://ant.apache.org/manual/install.html#librarydependencies 中找到

jsch.jar 0.1.42 or later

进入http://www.jcraft.com/jsch/index.html 找到下载地址:http://sourceforge.net/projects/jsch/files/jsch/jsch-0.1.43.jar/download

源码地址:http://sourceforge.net/projects/jsch/files/jsch/jsch-0.1.43.zip/download

二、测试可行性

下载后,放入自己的ant下的lib文件夹下,如果是eclipse需要加入运行环境window->preferences->ant->runtime->classpath中加入jsch-0.1.43.jar

例子,可以采用http://ant.apache.org/manual/Tasks/scp.html里面的examples,还挺全的,拷贝单个文件,拷贝文件夹,设置密码,设置私钥等

scp

下面亲自测试几个:

Xml代码 复制代码 收藏代码
  1. <targetname="scp-file">
  2. <scpfile="jar/fetch.jar"todir="uu:123@192.168.0.175:/home/uu/fetch"/>
  3. </target>
  4. <targetname="scp-folder">
  5. <scptodir="uu:123@192.168.0.175:/home/uu/fetch">
  6. <filesetdir="jar"/>
  7. </scp>
  8. </target>
    
    <target name="scp-file">
        <scp file="jar/fetch.jar" todir="uu:123@192.168.0.175:/home/uu/fetch" />
    </target>
   
    <target name="scp-folder">
            <scp todir="uu:123@192.168.0.175:/home/uu/fetch" >
                 <fileset dir="jar"/>
            </scp>
    </target>

com.jcraft.jsch.JSchException: reject HostKey: 192.168.0.175

会有以上的异常,奇怪的官方文档不说。要求你所连接的host必须存在于你的knownhosts文件中,并且 这个文件也必须是存在的,否则会出现上面的异常。

解决方法:

Xml代码 复制代码 收藏代码
  1. <targetname="scp-file">
  2. <scpfile="jar/fetch.jar"todir="uu:123@192.168.0.175:/home/uu/fetch"<SPANstyle="COLOR:#ff0000">trust="true"</SPAN>
  3. />
  4. </target>
  5. <targetname="scp-folder">
  6. <scptodir="uu:123@192.168.0.175:/home/uu/fetch"<SPANstyle="COLOR:#ff0000">trust="true"</SPAN>
  7. >
  8. <filesetdir="jar"/>
  9. </scp>
  10. </target>
    <target name="scp-file">
        <scp file="jar/fetch.jar" todir="uu:123@192.168.0.175:/home/uu/fetch" trust="true"
/>
    </target>
   
    <target name="scp-folder">
            <scp todir="uu:123@192.168.0.175:/home/uu/fetch" trust="true"
>
                 <fileset dir="jar"/>
            </scp>
    </target>

sshexec

再测试一下诱惑人的可执行shell功能,文档地址;http://ant.apache.org/manual/Tasks/sshexec.html

Xml代码 复制代码 收藏代码
  1. <targetname="sshexec">
  2. <sshexechost="192.168.0.175"
  3. username="uu"
  4. password="123"
  5. command="touchsomefile;ls;df-h;"trust="true"/>
  6. </target>
<target name="sshexec">
	 <sshexec host="192.168.0.175"
		username="uu"
		password="123"
		command="touch somefile;ls;df -h;" trust="true"/>
</target>

若个命令可以用;号隔开。

关于拷贝远程到本地,拷贝本地到远程,选取特定文件等等,都是变通可行的,本文就不再演示了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值