zoukankan      html  css  js  c++  java
  • 在Android 中实现scp操作

    本文简单介绍用SSHganymed-ssh2Android中实现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
    
    

    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>
    
    
    

    官方下载地址 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;
        }
    
        // 拷贝文件到服务器
        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");
                                    }
                                }
    
    
    

    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");
                        }
                    }
    
    
    

    scp

  • 相关阅读:
    主线程到子线程的相互切换
    IOS通过OTA部署App
    IOS应用之间调用
    静态库详解
    ObjectC的函数调用机制详解消息
    iOS6新特征:参考资料和示例汇总
    杭电acm2025
    杭电acm2051
    杭电acm1009
    杭电acm2099
  • 原文地址:https://www.cnblogs.com/chenjy1225/p/9662546.html
Copyright © 2011-2022 走看看