如何使用Ant進行ssh和scp操作

今天就跟大家聊聊有關(guān)如何使用Ant進行ssh和scp操作,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)建站擁有一支富有激情的企業(yè)網(wǎng)站制作團隊,在互聯(lián)網(wǎng)網(wǎng)站建設行業(yè)深耕10余年,專業(yè)且經(jīng)驗豐富。10余年網(wǎng)站優(yōu)化營銷經(jīng)驗,我們已為成百上千中小企業(yè)提供了成都網(wǎng)站設計、成都網(wǎng)站建設解決方案,按需網(wǎng)站設計,設計滿意,售后服務無憂。所有客戶皆提供一年免費網(wǎng)站維護!

使用Ant進行ssh和scp操作

一、簡介:

現(xiàn)在我們安裝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下有下載)?,F(xiàn)在可以使用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環(huán)境必須在Window->Preferences->Ant->Runtime->Classpath中加入jsch-0.1.24。

JSch是一個SSH2的純Java實現(xiàn)

    JSch允許你連接到sshd server并采用端口映射,X11映射; Scp文件傳輸?shù)?,你可以把集成JSch提供的功能到你自己的Java項目中,JSch 的授權(quán)方式為 BSD形式。

二、簡單例子:

下面是用JSch完成Sshexec和scp兩個任務的最簡單例子,如果需要更詳細的內(nèi)容,請參考Ant用戶手冊

[Sshexec任務]

<target name="sshexec">

        <sshexec host="10.14.50.63" username="abs" password="abs" 

               trust="true" command="cd /;ls" />

</target>

注意上面的trust屬性一般設置為true, 如果為默認值false時,那么就要求你所連接的host必須存在于你的knownhosts文件中,并且這個文件也必須是存在的,否則會出現(xiàn) com.jcraft.jsch.JSchException: reject HostKey: 192.168.122.180異常。執(zhí)行Linux下的命令時可以用分號”;”把多個命令隔開,它們將會依次執(zhí)行,而不需要寫多個sshexec進行多次連接,每次連接只執(zhí)行一個命令。

[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.拷貝本地目錄中的內(nèi)容到遠端,遞歸形式,但不在服務器上建立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>

三、其他例子:

例子1:

<project name="buildssh" default="DEFAULT" basedir=".">

<target name="init">

<!--   set   properties,   mkdir,   etc.   -->

<property file="build.properties" />

<property name="this.project" value="buildssh" />

<echo message="init   in   ${this.project}" />

<tstamp />

</target>

<target name="DEFAULT" depends="init">

<echo message="connecting   to   ${build.server}" />

<sshexec host="Linux   server   IP   address" 

username="Linux   server     username"

password="Linux   server   password" trust="true"

command="Command   you   want   to   run   on   the   server" />

</target>

</project> 

例子2:

import com.jcraft.jsch.Channel;

import com.jcraft.jsch.ChannelSftp;

import com.jcraft.jsch.JSch;

import com.jcraft.jsch.Session;

import com.jcraft.jsch.UserInfo;

public class ExecSCP {

public static final UserInfo defaultUserInfo = new UserInfo() {

public String getPassphrase() {

return null;

}

public String getPassword() {

return null;

}

public boolean promptPassword(String arg0) {

return false;

}

public boolean promptPassphrase(String arg0) {

return false;

}

public boolean promptYesNo(String arg0) {

return true;

}

public void showMessage(String arg0) {

}

};

public static void main(String[] args) throws Exception {

String hostname = "10.14.50.63";

String username = "abs";

String password = "abs";

String remoteFile = "asbpack.sh";

String localFile = "C:\\";

JSch jsch = new JSch();

/**

* 22為端口

*/

Session session = jsch.getSession(username, hostname, 22);

session.setPassword(password);

session.setUserInfo(defaultUserInfo);

session.connect();

Channel channel = session.openChannel("sftp");

channel.connect();

ChannelSftp c = (ChannelSftp) channel;

c.get(remoteFile, localFile);

session.disconnect();

}

}

看完上述內(nèi)容,你們對如何使用Ant進行ssh和scp操作有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

名稱欄目:如何使用Ant進行ssh和scp操作
標題URL:http://muchs.cn/article8/ipgdop.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號品牌網(wǎng)站設計、電子商務、微信小程序全網(wǎng)營銷推廣、小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設公司