如何在Android 中實(shí)現(xiàn)scp操作
本文簡(jiǎn)單介紹用SSH庫(kù)ganymed-ssh2在Android中實(shí)現(xiàn)scp操作。
SSHSSH是專為遠(yuǎn)程登錄會(huì)話和其他網(wǎng)絡(luò)服務(wù)提供安全性的協(xié)議,簡(jiǎn)單的說(shuō)就是一種網(wǎng)絡(luò)協(xié)議。是linux的標(biāo)準(zhǔn)配置。用于linux設(shè)備之間的通訊。
SCPSCP是一種基于SSH完成加密拷貝文件的協(xié)議。使用SSH進(jìn)行身份認(rèn)證確保數(shù)據(jù)傳輸?shù)恼鎸?shí)性和可靠性。
SCP默認(rèn)通過(guò)TCP端口22運(yùn)行
SCP程序常用語(yǔ)法:
// 復(fù)制文件到主機(jī)scp SourceFile user@host:directory/TargetFile// 從主機(jī)復(fù)制文件scp user@host:directory/SourceFile TargetFilescp -r user@host:directory/SourceFolder TargetFolder
// 從主機(jī)復(fù)制文件scp user@host:directory/SourceFile TargetFilescp -r user@host:directory/SourceFolder TargetFolderSFTP
SFTP也是基于SSH安全文件傳輸協(xié)議。不同于基于FTP,FTP基于Tcp使用明文傳輸用戶信息。安全性較差。
Android中使用SCP 下載ganymed-ssh2 jar包<!-- https://mvnrepository.com/artifact/ch.ethz.ganymed/ganymed-ssh2 --><dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> <version>build210</version></dependency>
官方下載地址 http://www.ganymed.ethz.ch/ssh2/
public class Scp { private volatile static Scp scpInstance; private String user; private String pass; private String host; private Connection connection; private SCPClient scpClient; private Boolean isAuthed; private Scp(String user, String pass, String host){ this.user = user; this.pass = pass; this.host = host; } public static Scp getScpUtilsInstance(String user, String pass, String host){ if(scpInstance == null) { synchronized(Scp.class) {if(scpInstance == null) { scpInstance = new Scp(user,pass,host);} } } return scpInstance; } public void connect(){ connection = new Connection(host); try { connection.connect(); isAuthed = connection.authenticateWithPassword(user,pass); // scp 連接 scpClient = connection.createSCPClient(); } catch (IOException e) { e.printStackTrace(); close(); } } public void close(){ connection.close(); sftPv3Client.close(); } public boolean getIsAuthed(){ return isAuthed; } // 拷貝文件到服務(wù)器 public void putFile(String filePath,String aimPath){ try { if(scpClient != null){scpClient.put(filePath,aimPath); } } catch (IOException e) { e.printStackTrace(); } } }
Scp scp = Scp.getScpUtilsInstance('root','psd','192.168.199.3'); scp.connect(); if(scp.getIsAuthed()){for(int i = 0;i<data.getLayers();i++){ scp.putFile(SlcParser.pngDirectory+'/'+i+'.png','/home');} }
private SFTPv3Client sftPv3Client; sftPv3Client = new SFTPv3Client(connection); public void rmFile(String filePath){ try {if(sftPv3Client != null){ sftPv3Client.rm(filePath);} } catch (IOException e) {e.printStackTrace(); } }Scp scp = Scp.getScpUtilsInstance('root','psd','192.168.199.3');scp.connect();if(scp.getIsAuthed()){ for(int i = 0;i<10;i++){ scp.rmFile('/home/'+i+'.png'); }}
以上就是如何在Android 中實(shí)現(xiàn)scp操作的詳細(xì)內(nèi)容,更多關(guān)于在Android 中實(shí)現(xiàn)scp操作的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. Java GZip 基于內(nèi)存實(shí)現(xiàn)壓縮和解壓的方法2. Springboot 全局日期格式化處理的實(shí)現(xiàn)3. 利用CSS制作3D動(dòng)畫4. python 浮點(diǎn)數(shù)四舍五入需要注意的地方5. jsp+servlet簡(jiǎn)單實(shí)現(xiàn)上傳文件功能(保存目錄改進(jìn))6. PHP實(shí)現(xiàn)簡(jiǎn)單線性回歸之?dāng)?shù)學(xué)庫(kù)的重要性7. 完美解決vue 中多個(gè)echarts圖表自適應(yīng)的問(wèn)題8. SpringBoot+TestNG單元測(cè)試的實(shí)現(xiàn)9. 存儲(chǔ)于xml中需要的HTML轉(zhuǎn)義代碼10. JAMon(Java Application Monitor)備忘記
