使用Ant进行ssh和scp操做

1、简介:
  如今咱们安装Linux的时候一般考虑到安全因素(默认状况下)是不打开telnet服务的,而ssh服务是有的,ant很早就支持telnet,但要求咱们在Linux下要安装telnet-server,并要启用该服务。html

还好自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下的一个项目。java

你须要把下载的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形式。服务器

2、简单例子:
  下面是用JSch完成Sshexec和scp两个任务的最简单例子,若是须要更详细的内容,请参考Ant用户手册app

[Sshexec任务]
<BR><target name="sshexec">
      <sshexec host="192.168.122.180" username="root"  password="123456"
         trust="true" command="cd /;ls"/>
</target>
ssh

注意上面的trust属性通常设置为true, 若是为默认值false时,那么就要求你所链接的host必须存在于你的knownhosts文件中,而且这个文件也必须是存在的,不然会出现 com.jcraft.jsch.JSchException: reject HostKey: 192.168.122.180异常。执行Linux下的命令时能够用分号";"把多个命令隔开,它们将会依次执行,而不须要写多个sshexec进行屡次链接,每次链接只执行一个命令。spa

该任务的执行后输出结果以下:.net

sshexec:
  [sshexec] Connecting to 192.168.122.180:22
  [
sshexec] backup
  [
sshexec] bin
  [
sshexec] boot
  [
sshexec] dev
  [
sshexecetc
  ...................
orm

[scp任务]server

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>

相关文章
相关标签/搜索