当前位置: 首页 > 工具软件 > JSch > 使用案例 >

JSch切换用户运行命令

牟焱
2023-12-01

   JSch执行切换用户的命令后,如果关闭连接,再次打开还是使用当前用户运行命令。

所以我们需要直接在切换用户的时候直接运行命令

try{
    JSch jsch = new JSch(); // 创建JSch对象
    String username="root";
    String host="127.0.0.1";
    int port=22;
    String password="*******";
    Session session = jsch.getSession(username, host, port); // 根据用户名,主机ip,端口获取一个Session对象
    session.setPassword(password); // 设置密码
    session.connect(); // 通过Session建立链接

    String cmd ="su - test  -c'pwd' ";
    ChannelExec channelExec = (ChannelExec) session.openChannel("exec");
    channelExec.setCommand(cmd);
    channelExec.setInputStream(null);
    channelExec.setErrStream(System.err);
    channelExec.connect();

    InputStream in = channelExec.getInputStream();
    String charset="GBK";
    BufferedReader reader = new BufferedReader(new InputStreamReader(in, Charset.forName(charset)));
    String buf = null;
    while ((buf = reader.readLine()) != null){
        System.out.println(buf);
    }
    if(reader!=null){
        reader.close();
    }
    if(in!=null){
        in.close();
    }
}catch(Exception e){
    System.out.println("登录出错!");
    e.printStackTrace();
}

运行的命令直接写成su - test -c "cmd"的形式

 类似资料: