Java执行linux命令

pom依赖 

<!--    jsch  -->
<dependency>
    <groupId>com.jcraft</groupId>
    <artifactId>jsch</artifactId>
    <version>0.1.55</version>
</dependency>

 代码

public static void main(String[] args) {
        String host = "xx.xx.xx.xx"; // 远程服务器IP地址---
        String user = "root"; // 远程服务器用户名
        String password = "123456"; // 远程服务器密码
        // 要执行的命令
        String command = "bash /usr/scripts/clear-bjccweb-allservercache.sh";

        try {
            JSch jsch = new JSch();
            Session session = jsch.getSession(user, host, 22); // 创建一个SSH会话
            session.setPassword(password); // 设置会话密码
            session.setConfig("StrictHostKeyChecking", "no"); // 设置会话配置
            session.connect(); // 连接会话

            Channel channel = session.openChannel("exec"); // 打开一个exec通道
            ((ChannelExec) channel).setCommand(command); // 设置要执行的命令
            channel.setInputStream(null);
            ((ChannelExec) channel).setErrStream(System.err); // 设置错误输出流

            InputStream inputStream = channel.getInputStream();
            channel.connect(); // 连接通道

            byte[] buffer = new byte[1024];
            while (true) {
                while (inputStream.available() > 0) {
                    int i = inputStream.read(buffer, 0, 1024);
                    if (i < 0) break;
                    System.out.print(new String(buffer, 0, i)); // 输出结果到控制台
                }
                if (channel.isClosed()) {
                    if (inputStream.available() > 0) continue;
                    System.out.println("exit-status: " + channel.getExitStatus()); // 输出退出状态
                    break;
                }
                try {
                    Thread.sleep(1000);
                } catch (Exception ee) {
                } // 等待一秒钟
            }
            channel.disconnect(); // 断开通道
            session.disconnect(); // 断开会话
        } catch (Exception e) {
            e.printStackTrace(); // 输出错误信息
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值