使用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>

相關文章
相關標籤/搜索