使用ant的scp和ssh命令

转自: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编辑好了再贴到这里好一点,并且更能作本地备份,以免意外,当然简单内容这里直接写也无妨。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值