今天就跟大家聊聊有關(guān)如何使用Ant進(jìn)行ssh和scp操作,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
創(chuàng)新互聯(lián)建站擁有一支富有激情的企業(yè)網(wǎng)站制作團(tuán)隊(duì),在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)深耕10余年,專業(yè)且經(jīng)驗(yàn)豐富。10余年網(wǎng)站優(yōu)化營(yíng)銷經(jīng)驗(yàn),我們已為成百上千中小企業(yè)提供了成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)解決方案,按需網(wǎng)站設(shè)計(jì),設(shè)計(jì)滿意,售后服務(wù)無憂。所有客戶皆提供一年免費(fèi)網(wǎng)站維護(hù)!
使用Ant進(jìn)行ssh和scp操作
一、簡(jiǎn)介:
現(xiàn)在我們安裝Linux的時(shí)候通??紤]到安全因素(默認(rèn)情況下)是不打開telnet服務(wù)的,而ssh服務(wù)是有的,ant很早就支持telnet,但要求我們?cè)贚inux下要安裝telnet-server,并要啟用該服務(wù)。
還好自Ant1.60開始支持了SSH 及SCP 操作了,早在Ant之前若要支持SSH、SCP、SFTP等任務(wù)就必須下載j2ssh的j2ssh-ant.jar和j2ssh-core.jar(在http://www.sourceforge.net的j2ssh下有下載)?,F(xiàn)在可以使用Ant提供的Sshexec和scp任務(wù),由$ANT_HOME/lib/ant-jsch.jar提供支持,但是同樣你也要在http://www.jcraft.com/jsch/index.html下載一個(gè)依賴包jsch-0.1.24.jar(文件名因版本而不同),jsch同樣也是http://www.sourceforge.net下的一個(gè)項(xiàng)目。
你需要把下載的jsch-0.1.24拷貝到$ANT_HOME/lib下,如果是Eclipse下的Ant環(huán)境必須在Window->Preferences->Ant->Runtime->Classpath中加入jsch-0.1.24。
JSch是一個(gè)SSH2的純Java實(shí)現(xiàn)
JSch允許你連接到sshd server并采用端口映射,X11映射; Scp文件傳輸?shù)?,你可以把集成JSch提供的功能到你自己的Java項(xiàng)目中,JSch 的授權(quán)方式為 BSD形式。
二、簡(jiǎn)單例子:
下面是用JSch完成Sshexec和scp兩個(gè)任務(wù)的最簡(jiǎn)單例子,如果需要更詳細(xì)的內(nèi)容,請(qǐng)參考Ant用戶手冊(cè)
[Sshexec任務(wù)]
trust="true" command="cd /;ls" /> 注意上面的trust屬性一般設(shè)置為true, 如果為默認(rèn)值false時(shí),那么就要求你所連接的host必須存在于你的knownhosts文件中,并且這個(gè)文件也必須是存在的,否則會(huì)出現(xiàn) com.jcraft.jsch.JSchException: reject HostKey: 192.168.122.180異常。執(zhí)行Linux下的命令時(shí)可以用分號(hào)”;”把多個(gè)命令隔開,它們將會(huì)依次執(zhí)行,而不需要寫多個(gè)sshexec進(jìn)行多次連接,每次連接只執(zhí)行一個(gè)命令。 [scp任務(wù)]<遠(yuǎn)程以根目錄計(jì)算> 1.拷貝單個(gè)文件到遠(yuǎn)端服務(wù)器 或 2.拷貝遠(yuǎn)端文件本地 3.拷貝遠(yuǎn)端目錄到本地,將以遞歸形式操作 4.拷貝本地目錄中的內(nèi)容到遠(yuǎn)端,遞歸形式,但不在服務(wù)器上建立my-app目錄 5.拷貝一系列的文件到遠(yuǎn)端,會(huì)建立相應(yīng)的層次目錄,不建立my-app目錄 或 三、其他例子: 例子1: username="Linux server username" password="Linux server password" trust="true" command="Command you want to run on the server" /> 例子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)容,你們對(duì)如何使用Ant進(jìn)行ssh和scp操作有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。
網(wǎng)站題目:如何使用Ant進(jìn)行ssh和scp操作
當(dāng)前URL:http://weahome.cn/article/ipgdop.html