




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List;
2、0; import java.util.Vector; import com.jcraft.jsch.Channel; import com.jcraft.jsch.ChannelSftp; import com.jcraft.jsch.JSch; import com.jcraft.jsch.JSchException; import com.jcraft.jsch.Session
3、; import com.jcraft.jsch.SftpException; import mon.util.log.EventLog; /* * In order for SSH2 tunneling to function correctly one must ensure that the *
4、160;following line is uncommented in /etc/ssh/sshd_config : * -CUT- * # Change to yes to enable tunnelled clear text passwords * PasswordAuthentication yes *
5、 -CUT- * Otherwise the initiation of the tunnel will fail with * "SSH Initialization failed, try again? * com.jcraft.jsch.JSchException: Auth fail" *
6、60;author aimer.xu * */ public class SftpHelper extends Thread private static EventLog log = new EventLog(SftpHelper.class);
7、 private String host; private String username; private String password; private String location;
8、160; private int port; private String knowHosts; private String osName; private
9、0;List<String> filenames = new ArrayList<String>(); public SftpHelper(String host, String username, String password, int port)
10、0; this(host, username, password, port, ""); public SftpHelper(String host, String username, String&
11、#160;password, int port, String location) this.host = host; this.username = username;
12、 this.password = password; this.port = port; osName = System.getProperty("");
13、160; if (osName.toUpperCase().indexOf("WINDOWS") > -1) this.knowHosts = "c:known_hosts"
14、60; if(location = null | location.length() = 0) this.location = "c:"
15、160; else this.knowHosts = "/root/.ssh/known_hosts"
16、 if(location = null | location.length() = 0) this.location = "/"
17、 this.location = location;
18、160; public void addFilename(String filename) filenames.add(filename); public void setFilenames(List
19、<String> filenames) this.filenames = filenames; public void run()
20、0;upload(); /* * 要上傳的文件必須包含完整的路徑 * */
21、0;public boolean upload() if(filenames.size() = 0) return false; Sessio
22、n session; Channel channel; JSch jsch = new JSch(); try
23、0; jsch.setKnownHosts(knowHosts); session = jsch.getSession(username, host, port);
24、 session.setPassword(password); session.connect(); channel = session.openChannel("sftp");
25、 channel.connect(); ChannelSftp c = (ChannelSftp)channel;
26、; c.cd(location); InputStream in = null;
27、0; OutputStream out = null; for(int i=0; i<filenames.size(); i+)
28、; String filename = filenames.get(i); if(filename = null | "".equals(filename)
29、60; log.Debug("", "當前沒有要上傳的文件!"); continue;
30、0; int idx= filename.lastIndexOf(File.separator);
31、 String uploadname = filename.substring(idx=-1?0:idx+1); out = c.put(uploadname);
32、160; log.Debug("", "sleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeep "+5000+"ms!");
33、 sleep(5000); in = new FileInputStream(filename); &
34、#160; / String suffix = filename.substring(filename.lastIndexOf(".")+1); /
35、0; if("gz".equals(suffix) / in = new GZIPInputStream(in); /
36、160; byte b = new byte1024;
37、 int n; while (n = in.read(b) != -1)
38、 out.write(b);
39、160; out.flush(); out.close(); in.close();
40、 c.disconnect(); session.disconnect(); sleep(500);
41、0; return true; catch (JSchException e) e.printStackTrace();
42、60; catch (SftpException e) e.printStackTrace(); catch (IOException e)
43、 e.printStackTrace(); catch(InterruptedException e) e.printStackTrace(); &
44、#160; return false; public static void main(String args)
45、 String username = "root" String host = "*.*.*.*" int port =&
46、#160;22; String password = "*" String path = "/home/data/download/" Sf
47、tpHelper helper = new SftpHelper(host, username,password, port,path); helper.addFilename("c:bcp.sql"); helper.addFilename("c:a.sql"
48、;); / helper.upload("c:bcp.sql"); helper.start(); import java
49、.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.ArrayList;import java.util.List;import java.util.Vector;import com.jcraft.jsch.Channel;import com.jcraft.jsch.ChannelSftp;import com.jcraft.jsch.JSch;import com.
50、jcraft.jsch.JSchException;import com.jcraft.jsch.Session;import com.jcraft.jsch.SftpException;import mon.util.log.EventLog;/* * In order for SSH2 tunneling to function correctly one must ensure that the * following line is uncommented in /etc/ssh/sshd_config : * -CUT- * # Change to yes to enable tun
51、nelled clear text passwords * PasswordAuthentication yes * -CUT- * Otherwise the initiation of the tunnel will fail with * "SSH Initialization failed, try again? * com.jcraft.jsch.JSchException: Auth fail" * author aimer.xu * */public class SftpHelper extends Thread private static EventLog
52、 log = new EventLog(SftpHelper.class);private String host;private String username;private String password;private String location;private int port;private String knowHosts;private String osName;private List<String> filenames = new ArrayList<String>();public SftpHelper(String host, String
53、 username, String password, int port) this(host, username, password, port, "");public SftpHelper(String host, String username, String password, int port, String location) this.host = host;this.username = username;this.password = password;this.port = port;osName = System.getProperty("o
54、");if (osName.toUpperCase().indexOf("WINDOWS") > -1) this.knowHosts = "c:known_hosts" if(location = null | location.length() = 0) this.location = "c:" else this.knowHosts = "/root/.ssh/known_hosts" if(location = null | location.length() = 0) this
55、.location = "/" this.location = location;public void addFilename(String filename)filenames.add(filename);public void setFilenames(List<String> filenames)this.filenames = filenames;public void run()upload();/* * 要上傳的文件必須包含完整的路徑 * */public boolean upload()if(filenames.size() = 0)return
56、 false;Session session;Channel channel;JSch jsch = new JSch();try jsch.setKnownHosts(knowHosts);session = jsch.getSession(username, host, port);session.setPassword(password);session.connect();channel = session.openChannel("sftp");channel.connect();ChannelSftp c = (ChannelSftp)channel;c.cd(
57、location);InputStream in = null;OutputStream out = null;for(int i=0; i<filenames.size(); i+)String filename = filenames.get(i);if(filename = null | "".equals(filename)log.Debug("", "當前沒有要上傳的文件!");continue;int idx= filename.lastIndexOf(File.separator);String uploadnam
58、e = filename.substring(idx=-1?0:idx+1);out = c.put(uploadname);log.Debug("", "sleeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeep "+5000+"ms!");sleep(5000);in = new FileInputStream(filename);/String suffix = filename.substring(filename.lastIndexOf(".")+1);/if("
59、gz".equals(suffix)/in = new GZIPInputStream(in);/byte b = new byte1024;int n;while (n = in.read(b) != -1) out.write(b);out.flush();out.close();in.close();c.disconnect();session.disconnect();sleep(500);return true; catch (JSchException e) e.printStackTrace(); catch (SftpException e) e.printStack
60、Trace(); catch (IOException e) e.printStackTrace(); catch(InterruptedException e)e.printStackTrace();return false;public static void main(String args)String username = "root"String host = "*.*.*.*"int port = 22;String password = "*"String path = "/home/data/downloa
61、d/"SftpHelper helper = new SftpHelper(host, username,password, port,path);helper.addFilename("c:bcp.sql");helper.addFilename("c:a.sql");/helper.upload("c:bcp.sql");helper.start(); 請注意類的注釋部分,known_hosts文件的內容如下:Java代碼 90 ssh-rsa AAAAB3NzaC1yc2
62、EAAAABIwAAAIEA6tHmMBQwcSieFneaObnDyzthMSn1FyWFp/TCMV4rt+ZEtOZo49GK0kdM3tYy1IQD8hZz016JG5uOIbrBN+O0BtzY89y3uIwo0hsYQtP/LKAR5BU+pT3R20ltVbcEGzrSpKiSClObD9MbiOt0899Du9bG89/BiMvxUxj/Rhg33l0= 90 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAIEA6tHmMBQwcSieFneaObnDyzthMSn1FyWFp/TCMV4rt+ZEtOZo49GK0k
63、dM3tYy1IQD8hZz016JG5uOIbrBN+O0BtzY89y3uIwo0hsYQtP/LKAR5BU+pT3R20ltVbcEGzrSpKiSClObD9MbiOt0899Du9bG89/BiMvxUxj/Rhg33l0= 寫道附:產生此文件的簡單方法:可以在Linux中用ssh命令登錄一次,這樣便在/root/.ssh(假如使用root用戶登錄到Linux)目錄下生成known_hosts文件。 /* * */package com.test.tool;import mons.vfs.FileObject; import mons.vfs.FileSyst
64、emException; import mons.vfs.FileSystemOptions; import mons.vfs.Selectors; import mons.vfs.cache.DefaultFilesCache; import mons.vfs.impl.DefaultFileSystemManager; import vider.local.DefaultLocalFileProvider; import vider.sftp.SftpFileProvider; import vider.sftp.Sf
65、tpFileSystemConfigBuilder; import vider.zip.ZipFileProvider; import mons.logging.*;/* 15. * author myao Update:2006-7-1810:40:46 16. */ public class AutoChecker private String _sourceroot = "C:/vfsroot" private String _targetroot = "sftp:/odpuser:odpuser1:22/doc
66、-root/myaoVfstest/" / b1:f1:ef:26:3e:5f:a5:0d:70:fa:5e:df:d9:6b:55:41 private FileObject localfs, targetfs; private DefaultFileSystemManager vfsmgr; private Log log = LogFactory.getLog(AutoChecker.class); AutoChecker() try init(); catch (FileSystemException e) e.printStackTrace(); void init() t
67、hrows FileSystemException vfsmgr = getDefaultFileSystemManager(); void moveFile(String sourcePath, String targetPath) throws FileSystemException localfs = vfsmgr.resolveFile(sourcePath); if (!localfs.exists() localfs.createFolder(); / localfs. / vfsmgr. FileSystemOptions opts = new FileSystemOptions
68、(); SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking( opts, "no"); targetfs = vfsmgr.resolveFile(targetPath, opts); if (!targetfs.exists() targetfs.createFolder(); try long startTime = System.currentTimeMillis(); / System.out.println("Source File:" + source.getC
69、hildren().length); targetfs.copyFrom(localfs, Selectors.SELECT_FILES); / System.out.println("Target File:" + target.getChildren().length); / TODO 要想辦法用遍歷的方法來拷貝文件,否則無法留下拷貝的細節。 /正在裝載數據 / FileObject flist = localfs.getChildren(); / for (int i = 0; i < flist.length; i+) / FileObject tmp = v
70、fsmgr.resolveFile(targetfs, flisti.getName() / .getBaseName(); / if (!tmp.exists() / tmp.createFile(); / / / VfsMutiMove t = new VfsMutiMove(flisti, tmp); / t.run(); / / tmp.copyFrom(flisti, Selectors.SELECT_SELF); / long endTime = System.currentTimeMillis(); System.out.println(this.getClass().getNa
71、me(); System.out.println("Cost time(ms:):" + (endTime - startTime); catch (FileSystemException e) e.printStackTrace(); private DefaultFileSystemManager getDefaultFileSystemManager() DefaultFileSystemManager mgr = new DefaultFileSystemManager(); / SFTP 供應者 SftpFileProvider fp = new SftpFile
72、Provider(); FileSystemOptions t = new FileSystemOptions(); / ZIP 供應者 ZipFileProvider zp = new ZipFileProvider(); / 缺省本地文件供應者 DefaultLocalFileProvider lf = new DefaultLocalFileProvider(); try / common-vfs 中 文件管理器的使用范例 mgr.addProvider("sftp", fp); mgr.addProvider("zip", zp); mgr.ad
73、dProvider("file", lf); mgr.setFilesCache(new DefaultFilesCache(); mgr.init(); catch (FileSystemException e) / 此處應該改為log e.printStackTrace(); return mgr; void getWorkspaceFromProperties() /* * Properties tmpProperties; File tmpfile = new * File("perties"); */ /* 138.
74、* param args 139. * throws Exception 140. */ public static void main(String args) throws Exception AutoChecker op =new AutoChecker(); op.moveFile("C:/downloads", "sftp:/odpuser:odpuser1:22/etc/services"); VFSTest.javaimport java.io.IOException;import mons.vfs.FileConte
75、nt;import mons.vfs.FileObject;import mons.vfs.FileSystemManager;import mons.vfs.FileType;import mons.vfs.VFS;public class VFSTest public static void main(String args) throws IOException FileSyste
76、mManager fsManager = VFS.getManager(); FileObject fo = fsManager.resolveFile("ftp:/ftpusername:ftppassword:21/dir/dir1/"); FileObject children = fo.getChildren();/得到遠程文件列表
77、 for ( int i = 0; i < children.length; i+ ) FileObject f = children i ;
78、60; FileContent c = f.getContent(); File localFile = new File(f.getName().get
79、BaseName(); FileOutputStream out = new FileOutputStream(localFile); mons.io.IOUtils.
80、copy(c.getInputStream(), out);/寫入本地/或使用寫入 FileObject obj = fileSystemManager.resolveFile(this.getTargetResourceURL()+f.getName().getBaseName(); &
81、#160; if(!obj.exists() obj.createFile(); &
82、#160; obj.copyFrom(f, Selectors.SELECT_SELF); final long size = ( f.ge
83、tType() = FileType.FILE ) ? c.getSize() : -1; final long date = ( f.getType() = FileType.FILE ) ? c.getLastModifiedTime() : -1; System.out.println( f.getName().getPath(
84、)+ " date:" + date + " Size:" + size ); 連接SFTPFileSystemManager fsManager = VFS.getManager(); FileSystemOptions opts = new FileSystemOptions(); SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking(opts, "no");
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國冷萃咖啡壺行業市場全景分析及前景機遇研判報告
- 住院醫師病例匯報大賽
- 內科咨詢報告總結
- DBJT 13-119-2010 福建省住宅工程質量分戶驗收規程
- 半年護理工作總結
- 女士形象禮儀培訓
- 污水泵基礎知識培訓
- 急性胰腺炎病人的護理
- 祭祖活動面試題及答案
- java基礎面試題及答案軟件測試
- 藍天救援隊隊員入隊申請表
- 施工升降機月檢記錄表
- T-CCIAT 0044-2022 智慧園區以太全光網絡建設技術規程
- 廣西基本醫療保險異地就醫備案登記表-示例樣表
- 中學生日常行為習慣養成課題計劃2
- 供應商綠色環保環境管理體系評估表
- GB∕T 11344-2021 無損檢測 超聲測厚
- 《云南省建筑工程資料管理規程應用指南)(上下冊)
- 數列求和中常見放縮方法和技巧(含答案)
- 寶興縣中藥材生產現狀及發展思路
- 小兒霧化吸入課件.ppt
評論
0/150
提交評論