JSch切换用户运行命令

   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"的形式

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值