如何在Android 中实现scp操作
更新时间:2021年03月17日 14:24:42 投稿:yxs
这篇文章主要介绍了如何在Android 中实现scp操作,帮助大家更好的理解和学习使用Android,感兴趣的朋友可以了解下
本文简单介绍用SSH库ganymed-ssh2在Android中实现scp操作。
SSH
SSH是专为远程登录会话和其他网络服务提供安全性的协议,简单的说就是一种网络协议。是linux的标准配置。用于linux设备之间的通讯。
SCP
SCP是一种基于SSH完成加密拷贝文件的协议。使用SSH进行身份认证确保数据传输的真实性和可靠性。
SCP默认通过TCP端口22运行
SCP程序常用语法:
// 复制文件到主机 scp SourceFile user@host:directory/TargetFile // 从主机复制文件 scp user@host:directory/SourceFile TargetFile scp -r user@host:directory/SourceFolder TargetFolder
// 从主机复制文件 scp user@host:directory/SourceFile TargetFile scp -r user@host:directory/SourceFolder TargetFolder
SFTP
SFTP也是基于SSH安全文件传输协议。不同于基于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>
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; } // 拷贝文件到服务器 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"); } }
SFTP 删除文件
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 中实现scp操作的详细内容,更多关于在Android 中实现scp操作的资料请关注脚本之家其它相关文章!
相关文章
Flutter 利用CustomScrollView实现滑动效果
我们可以使用ListView将几个GridView组合在一起实现了不同可滑动组件的粘合,但是这里必须要设置禁止 GridView 的滑动,防止多个滑动组件的冲突。这种方式写起来不太方便,事实上 Flutter 提供了 CustomScrollView 来粘合多个滑动组件,并且可以实现更有趣的滑动效果。2021-06-06Android设置Activity背景为透明style的简单方法(必看)
下面小编就为大家带来一篇Android设置Activity背景为透明style的简单方法(必看)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2016-10-10
最新评论