java代码远程执行shell脚本

Java利用JSCH库远程连接Linux服务器以及操作多条Shell命令 为了实现DHCP服务器的IP存储、回收和查询机制,我们需要将服务器中LXD容器的网卡IP查询出来,并且存储到服务器中的Mysql中。所以,下面介绍如何通过Java远程连接Linux服务器以及操作多条Shell命令。 阅读详情

1、脚本信息如下:

2、代码如下:

public class SSHTool {

    private Connection conn;
    private String ipAddr;
    private Charset charset = StandardCharsets.UTF_8;
    private String userName;
    private String password;

    public SSHTool(String ipAddr, String userName, String password, Charset charset) {
        this.ipAddr = ipAddr;
        this.userName = userName;
        this.password = password;
        if (charset != null) {
            this.charset = charset;
        }
    }

    /**
     * 登录远程Linux主机
     *
     * @return 是否登录成功
     */
    private boolean login() {
        conn = new Connection(ipAddr);
        try {
            // 连接
            conn.connect();
            // 认证
            return conn.authenticateWithPassword(userName, password);
        } catch (IOException e) {
            e.printStackTrace();
            return false;
        }
    }


    /**
     * 执行Shell脚本或命令
     *
     * @param cmds 命令行序列
     * @return 脚本输出结果
     */
    public StringBuilder exec(String cmds) throws IOException {
        InputStream in = null;
        StringBuilder result = new StringBuilder();
        try {
            if (this.login()) {
                // 打开一个会话
                Session session = conn.openSession();
                session.execCommand(cmds);
                in = session.getStdout();
                result = this.processStdout(in, this.charset);
                conn.close();
            }
        } finally {
            if (null != in) {
                in.close();
            }
        }
        return result;
    }

    /**
     * 解析流获取字符串信息
     *
     * @param in      输入流对象
     * @param charset 字符集
     * @return 脚本输出结果
     */
    public StringBuilder processStdout(InputStream in, Charset charset) throws FileNotFoundException {
        byte[] buf = new byte[1024];
        StringBuilder sb = new StringBuilder();
        try {
            // 此方法是休息10秒后最后一次性输出2行数据
            int length;
            while ((length = in.read(buf)) != -1) {
                sb.append(new String(buf, 0, length));
            }

            // 这个会按照脚本一步一步执行,中途有休息10秒。
            BufferedReader reader = null;
            String result = null;
            reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
            while ((result = reader.readLine()) != null) {
                System.out.println(result);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return sb;
    }

    // 脚本执行结束返回
    public static void main(String[] args) throws IOException {
        SSHTool tool = new SSHTool("192.168.80.202", "root", "123456", StandardCharsets.UTF_8);
        System.out.println(tool.exec("bash /opt/module/test.sh"));
    }
}

Java远程执行Shell指令 JSch(Java Secure Channel)是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,进而使用端口转发,X11转发,文件传输等等功能。在前面的博客里,有介绍到如何使用JSch实现SFTP的相关操作,本文这里主要介绍如何利用JSch进行远程Shell操作。 软硬件环境说明:Windows10、IntelliJ IDEA、SpringBoot 2.1.... 阅读详情

相关推荐

简单实用!shell脚本实现ssh远程链接的三种方法

请将${REMOTE_U​SER}和${REMOTE_IP}替换为实际的远程电脑用户名和IP地址。这个命令会要求你输入远程电脑的密码。请确保将REMOTE_IP、REMOTE_USER和REMOTE_PASSWORD变量替换为实际的远程电脑IP地址、用户名和密码。请确保将REMOTE_IP和REMOTE_USER变量替换为实际的远程电脑IP地址和用户名。当运行此脚本时,系统会提示输入远程电脑的密码,输入密码后,将成功连接到远程电脑。按照提示操作,可以选择默认的文件路径和空密码。id_rsa(私钥)

ericdowney 1万+

java实现远程执行Linux下的shell脚本

最近有个项目,需要在Linux下的服务器内写了一部分Python脚本,业务处理却是在Java内,那么就想能不能在Java里面,来远程执行Linux下的Python脚本,就是把shell命令写到Java里面。我们想要去执行Linux下的shell命令,那我们第一步的操作就是应该去连接服务器,先和服务器打通才能进行下一步。如果想要执行的输出结果的话,我们可以加上InputStream输出流,来确认是否执行成功。当我们连接上服务器后,我们就需要打开一个Session,来执行我们的脚本shell命令。

热爱技术,享受生活 3万+

Ubuntu下Vim创建属于自己的头部注释和代码模板

痛点 每次打开vim想写个C或者C++的程序都要把固定的模板敲一遍,是不是感觉非常的繁琐,能不能把Vim弄得像IDE那样新建一个文件直接生成对应的头部注释和代码模板,减少这些重复工作呢?下面我尽量详细的介绍实现的方法: 先看看新建文件后的效果 C语言格式效果 C++语言效果 方法: 使用命令 vi /etc/vim/vimrc 打开vimrc这个文件,然后复制以下代码至文件末尾的空白处即可! 修改vimrc文件里面的内容必须要用root管理员身份才能进行修改,修改时先切换至root身份即可。 "新建.

weixin_42137584的博客 1561

Java远程连接Linux服务器执行shell脚本

Java远程连接Linux服务器执行shell脚本

爱笑的boy的博客 4652

深入浅出:UE4类型系统完整构建过程详解

UE4的类型系统是一个复杂但设计精巧的架构,它通过静态代码生成和运行时构建的完美配合,实现了强大的反射功能。理解这个过程不仅有助于解决开发中的问题,也能让你更好地利用UE4的各种高级特性。就像建造一栋大楼需要经过设计、备料、框架、装修、验收等多个阶段,UE4类型系统的构建也是一个多阶段、精细化的过程。每个阶段都有其特定的职责,共同协作完成从源代码到运行时对象的转换。

m0_45371381的博客 911

实测对比:纳芯微NSD1624在光伏逆变器中的性能表现(含温度测试数据)

本文详细评测了纳芯微NSD1624非隔离驱动芯片在光伏逆变器中的性能表现,包括动态效率、高温稳定性及抗干扰能力。实测数据显示,该芯片在800V母线电压下效率峰值达99.03%,高温环境下结温稳定在102.7℃,且传播延迟一致性优异。与竞品相比,NSD1624在总损耗和热阻方面具有显著优势,是光伏逆变器驱动方案的理想选择。

weixin_29297127的博客 364

java免密登录Linux执行脚本,java代码通过ssh免密操作远程服务器shell

环境操作系统:win10虚拟机:centos7步骤一般我们都是通过CRT这样的工具来连接并操作服务器。但是最近由于业务需求,需要通过java代码来操作远程服务器。其实也就是操作shell。思路:①使用java两个相关类Runtime和Process1.Runtime:该类封装了运行时的环境。每个Java应用程序都有一个Runtime类实例,是应用程序能够与其运行的环境环境相链接。在多线程的操作系统...

weixin_42783709的博客 1251

Mamba-YOLO训练前必看:从环境配置到数据集调整的完整流程

本文详细介绍了Mamba-YOLO目标检测框架的完整训练流程,包括环境配置、数据集优化和模型调参。从硬件准备到依赖安装,再到数据增强和超参数调整,提供了一系列实用技巧和常见问题解决方案,帮助开发者高效训练Mamba-YOLO模型,避免常见踩坑记录。

tech5的博客 827

Java SSH远程执行Shell脚本实现

此程序需要ganymed-ssh2-build210.jar包。 下载地址:http://www.ganymed.ethz.ch/ssh2/ 为了调试方便,可以将\ganymed-ssh2-build210\src下的代码直接拷贝到我们的工程里, 此源码的好处就是没有依赖很多其他的包,拷贝过来干干净净。 此程序的目的是执行远程机器上的Shell脚本。 远程机器IP:***.**.**

zhouyh7的专栏 1523

Howland电流源电路:从理论到实践的深度解析与优化策略

本文深度解析了Howland电流源电路的工作原理,从经典四电阻架构的“虚短”“虚断”分析,到其实现宽带恒流输出的理论优势。重点剖析了实践中因电阻精度、运放参数及PCB布局导致的性能瓶颈,并提供了引入第五电阻、优化运放选型等关键优化策略,旨在将输出阻抗从kΩ级提升至MΩ级,以满足精密测量与传感器驱动等应用需求。

weixin_29243063的博客 443

Python实战日志_P4_图书馆Web API服务

目标:使用Flask将图书馆系统升级为RESTful API服务,掌握Web开发基础难度:⭐⭐⭐⭐☆预计学习时间:75分钟前置要求:已完成第3篇《个人图书馆管理系统》

qq_39436086的博客 83

java jsch shell_java jsch远程执行shell脚本命令

由于需要远程监控一些Linux主机的运行情况,需要通过java远程执行一些shell脚本,并获取返回值,可以通过jsch实现jsch jar包下载地址:http://sourceforge.net/projects/jsch/files/jsch.jar/0.1.51/jsch-0.1.51.jar/downloadpublic static void SSHCommand(String host...

weixin_39585974的博客 4173

Qt代码-军用仿真系统基础框架

ui->mapClickLabel->setText(QString("地图点击:(%.1f, %.1f)米").arg(worldPos.x()).arg(worldPos.y()));emit simulationEvent(QString("添加实体: %1 (ID: %2)").arg(attr.name).arg(entity.id()));// 像素坐标→世界坐标(米)

寒寒豆豆软件公司的博客 169

java通过代码登录远程linux服务器并执行linux命令shell脚本

package com.snailxr.helper; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import com.jcraft.jsch.ChannelExec; import com.jcraft.jsch.JSch; import com.jcraft.jsch.Session; /** * SSH工具类 * @author 王建国 * 20.

linwei_hello的专栏 599

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java程序SSH远程执行Shell脚本

转载自http://www.open-open.com/lib/view/open1384351384024.html

綦侬BLOG 4338

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

java调用远程主机shell_Java 执行远程主机shell命令代码

packagecom.gosun.utils;importch.ethz.ssh2.ChannelCondition;importch.ethz.ssh2.Connection;importch.ethz.ssh2.Session;importch.ethz.ssh2.StreamGobbler;importjava.io.IOException;importjava.io.InputStream...

weixin_30033489的博客 188

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Java通过SSH2协议执行远程Shell脚本

Java通过SSH2协议执行远程Shell脚本(ganymed-ssh2-build210.jar)   2008-11-11 19:49:28|  分类: Ssh |字号 订阅 该工具Jar包可在:http://www.ganymed.ethz.ch/ssh2/下载 ganymed-ssh2简介: Ganymed SSH-2 for Java是用纯Java实现SSH-2协议的

yibo2010的专栏 1031

Java实践 — SSH远程执行Shell脚本

Java实践 — SSH远程执行Shell脚本http:// 原文地址: http://blog.youkuaiyun.com/jmyue/article/details/14003783      作者:supereagle 1. SSH简介         SSH是Secure Shell的缩写,一种建立在应用层和传输层基础上的安全协议。SSH在连接和传送过程中会加密所有数据,可以用来在不同系统

Cheers Li 软件测试博客 2720

java代码执行shell命令

java代码执行shell命令,需要通过google出品的工具类ssxcute.jar,下载地址: https://download.youkuaiyun.com/download/qq_15076569/10797217 java代码操作shell代码: import net.neoremind.sshxcute.core.ConnBean; import net.neoremind.sshxcu...

qq_15076569的博客 1180

java ssh 远程执行_Java SSH远程执行Shell脚本实现(转)

/***//*** 远程执行shell脚本类* @author l*/public classRmtShellExecutor {/***//***/privateConnection conn;/***//** 远程机器IP*/privateString ip;/***//** 用户名*/privateString usr;/***//** 密码*/privateString ...

weixin_36444881的博客 252

本地代码调用远程shell代码

1.需求(两台机器没有设置ssh免登陆) shell 在另一台服务器上 代码在其他服务器上 2.要求: 在代码端的服务器 来调用另一台服务器上的shell 所需jar:commons-io-2.4.jar  ganymed-ssh2-build210.jar 3.代码实现         conn = new Connection("192.77.210.202"); //远程she

UnknownZYB的博客 895

java shell ssh框架_Java SSH远程执行Shell脚本实现

/***//*** 远程执行shell脚本类* @author l*/public classRmtShellExecutor {/***//***/privateConnection conn;/***//** 远程机器IP*/privateString ip;/***//** 用户名*/privateString usr;/***//** 密码*/privateString ...

weixin_39746241的博客 101

java调用远程机器的shell脚本

此程序的目的是执行远程机器上的Shell脚本。 【环境参数】远程机器IP:192.168.174.129用户名:root密码:rootShell脚本的路径:/root/test/test.sh 【具体步骤】1、在远程机器上,准备Shell脚本。2、修改test.sh的文件权限,确保可执行 3、开启远程机器的sshd的权限 步骤: 1、修改sshd_config文件,命令为:vi /et...

zengshaotao的专栏 965
上一篇: Iceberg(二)对接Spark
下一篇: ClickHouse(七)MaterializeMySQL引擎
Yuan_CSDF
博客等级 码龄10年 169粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值