问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java代码中如何实现跟SSH客户端一样的功能

发布网友 发布时间:2022-04-20 14:05

我来回答

1个回答

热心网友 时间:2023-06-24 06:01

import ch.ethz.ssh2.Connection;  
import ch.ethz.ssh2.Session;  
import ch.ethz.ssh2.StreamGobbler;  
import com.io.Debug;  
import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.InputStreamReader;  
import java.io.OutputStream;  
/** 
 * 
 * @author leon.lee 
 */  
public class ChangeEmailPassword {  
    private String username = "";  
    private String oldpassword = "";  
    private Connection conn = ;  
    private boolean hasError = false;  
    private String ErrorMessage = "";  
    private boolean isSuccessfully = false;  
    private String SystemMessage = "";  
      
    public static final String HOST = "127.0.0.1"; //server ip  
    public boolean isSuccessfully(){  
        return isSuccessfully;  
    }  
    public boolean isHasError(){  
        return hasError;  
    }  
    public String getErrorMessage(){  
        return ErrorMessage;  
    }  
    public void setErrorMessage(String msg){  
        hasError = true;  
        this.ErrorMessage =  msg;  
    }  
    /** 
     * Creates a new instance of <code>ChangeEmailPassword</code>. 
     * @param username 
     * @param oldpassword 
     */  
    public ChangeEmailPassword(String username,String oldpassword) {  
        this.username = username;  
        this.oldpassword = oldpassword;  
         try{  
             conn = new Connection(HOST);  
             conn.connect();  
            /* Authenticate */  
            boolean isAuthenticated = conn.authenticateWithPassword(username, oldpassword);  
            if (isAuthenticated == false) {  
                setErrorMessage("Authentication failed.");  
                conn=;  
            }  
         }catch(Exception e){  
             conn.close();  
             conn = ;  
             System.out.println(e);  
         }  
    }  
    public void setNewPassword(String newpassword) {  
        if(hasError){  
            return;  
        }  
        if (conn==){  
            return;  
        }  
        try{  
            Session sess = conn.openSession();  
            sess.execCommand("passwd");  
            InputStream so = sess.getStdout();  
            InputStream err = sess.getStderr();  
            OutputStream out = sess.getStdin();  
              
            byte[] buffer = new byte[500];//其实没有必要这么大.130就差不多了.怕万一有什么提示.  
            int length = 0;  
            length = err.read(buffer);  
//            if (length > 0) {  
//                System.out.println("#1:"+ new String(buffer, 0, length));  
//                //(current) UNIX password:  
//            }  
            String coldpassword = oldpassword+"\n";  
            out.write(coldpassword.getBytes());  
            length = err.read(buffer);  
//            if (length > 0) {  
//                System.out.println("#2:"+ new String(buffer, 0, length));  
//                //(current) UNIX password:  
//            }  
            String cnewpass = newpassword +"\n";  
            out.write(cnewpass.getBytes());  
            length = err.read(buffer);  
            if (length > 0) {  
                String rs = new String(buffer, 0, length);  
                //System.out.println("#3:"+rs);  
                if(rs.indexOf("BAD")>-1){  
                    sess.close();  
                    conn.close();  
                    setErrorMessage(rs);  
                    return;  
                }  
            }  
            out.write(cnewpass.getBytes());  
            length = so.read(buffer);  
            if (length > 0) {  
                String rs = new String(buffer, 0, length);  
                if(rs.indexOf("successfully")>-1){  
                    this.isSuccessfully = true;  
                    this.SystemMessage = rs;  
                }  
            }  
            /* Close this session */  
            sess.close();  
            /* Close the connection */  
            conn.close();  
        } catch (IOException e) {  
            e.printStackTrace(System.err);  
        }  
    }  
    /** 
     * @param args the command line arguments 
     */  
    public static void main(String[] args) {  
        ChangeEmailPassword cep = new ChangeEmailPassword("username", "oldpassword");  
        if(cep.isHasError()){  
            System.out.println(cep.getErrorMessage());  
            cep = ;  
            return;  
        }  
        cep.setNewPassword("newpassword");  
        if(cep.isHasError()){  
            System.out.println(cep.getErrorMessage());  
            cep = ;  
            return;  
        }  
        if(cep.isSuccessfully){  
            System.out.println(cep.getSystemMessage());  
        }  
    }  
    /** 
     * @return the SystemMessage 
     */  
    public String getSystemMessage() {  
        return SystemMessage;  
    }  
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
什么时候功率最大 最小 家电多少功率算高功率 大功率用电器在开启瞬间,需要比正常使用功率大很多的启动电流,这是为什 ... 大功率电器设备为什么不能一下开到最大 有一个节能灯突然坏了,是哪个件坏了? 我不知道是节能灯坏了,还是开关面板坏了,按下开关面板时,节能灯有时... 为什么节能灯老是烧坏 湖州南太湖新区包括龙之梦吗 南太湖新区有哪些地方 南太湖是哪里 一个客户管理系统,是JAVA SSH框架的,不知道怎么... java SSH框架 ssh分别充当什么角色? java —— ssh用户权限要怎么实现? Java中的SSH是什么 支付宝之间怎么转账 怎么把支付宝发给别人? 怎么把支付宝的钱转到QQ上(不用银行卡) 支付宝怎么给QQ或者微信转账? 朋友银行卡有网银,但是没有绑定qq或者微信和支付... 支付宝给qq好友转账 如何通过支付宝给扣扣好友转账?可我支付宝里面的... 哈尔浜银行卡可以在I工行取现金吗要手续费吗? 五个手指各戴戒指是什么意思? 各个手指戴戒指的含义是什么 人的五个手指戴戒指各代表什么意思? 手指戴很多戒指什么心理 五个手指戴戒指分别代表什么? 怎么保证企业无线wifi用网的安全? wiFi的发明 4G无线WIFI路由器,哪些厂家的速度快而且稳定,作... java程序中使用SSH框架的有什么好处 java中SSH到底是干什么的,说的通俗一点,谢谢。 java ssh linux 编程 java中的ssh框架原理 Java开发的ssh项目,一个用户登录一个网站,是不是... java通过ssh连接linux怎么设置超时 JAVA SSH和JFinal框架 有什么区别?(优缺点) java 通过ssh连接linux服务器,怎么登录oracle执行... java ssh框架 根据已登录用户查询登录用户自己的信... java中的ssh框架到底是什么 java ssh项目中修改自己的用户名上边的显示用户名... Java 三大框架SSH,自学先学哪个 JAVA求教SSH项目中如何获取外来访问者的IP地址 微信恢复用什么软件可以恢复啊? 怎样还原微信? 怎么下载不同版本的微信 怎么下载以前版本的微信 AMD处理器和英特尔的差别 手机版本低怎样下载旧版本微信 ipad怎么下载老版本微信