欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

如何在Android 中实现scp操作

程序员文章站 2022-03-07 23:26:13
本文简单介绍用ssh库ganymed-ssh2在android中实现scp操作。sshssh是专为远程登录会话和其他网络服务提供安全性的协议,简单的说就是一种网络协议。是linux的标准配置。用于li...

本文简单介绍用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");
                }
              }

如何在Android 中实现scp操作

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操作的详细内容,更多关于在android 中实现scp操作的资料请关注其它相关文章!

相关标签: Android scp