【FineReport】帆软调用服务器的kettle作业

embedded/2024/10/25 8:15:38/

1、编写自定义函数并编译

package com.fr.function;import ch.ethz.ssh2.ChannelCondition;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
import com.fr.script.AbstractFunction;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;import static com.fr.health.constants.ComponentHealthConstants.Status.TIME_OUT;public class CustomSubmitJobCommon extends AbstractFunction {@Overridepublic Object run(Object[] arg0) {return executeRemoteCommandCommon();}private String executeRemoteCommandCommon() {final String ipAddress = "127.0.0.1";     // 远程服务器主机ip final String username = "root";          //用户名final String password = "123456";   // 登录密码final String command = "cd /usr/kettle_task/N_steelmaking/ceshi/cb_ceshiv1 && ./cb_ceshiv1.sh";   //调用kettle作业的命令try{Connection conn = new Connection(ipAddress);conn.connect(); // 连接远程服务器if (!conn.authenticateWithPassword(username, password)) {System.err.printf("Failed to authenticate with username '%s' on server %s.", username, ipAddress);return "用户名或密码错误";}try {Session session = conn.openSession(); // 打开一个会话session.execCommand(command); // 执行cmd命令System.out.println(command);// Capture output and errorsInputStream stdOut = new StreamGobbler(session.getStdout());InputStream stdErr = new StreamGobbler(session.getStderr());// Read and potentially log stdout/stderrprintStream(stdOut, "STDOUT:");printStream(stdErr, "STDERR:");// Wait for the command to finish, with a timeoutint exitStatus = session.waitForCondition(ChannelCondition.EXIT_STATUS, TIME_OUT);if (exitStatus == TIME_OUT) {System.err.println("Command execution timed out.");return "执行失败";}return "执行成功";} finally {conn.close();}} catch (IOException e) {System.err.println("An error occurred during the SSH connection or command execution.");e.printStackTrace();return "连接失败";}}private void printStream(InputStream in, String streamType) {try (BufferedReader reader = new BufferedReader(new InputStreamReader(in))) {String line;while ((line = reader.readLine()) != null) {System.out.println(streamType + " " + line);}} catch (IOException e) {System.err.println("Error reading from stream: " + e.getMessage());}}public static void main(String[] args) {CustomSubmitJobCommon job = new CustomSubmitJobCommon();System.out.println(job.executeRemoteCommandCommon());}
}

2、新增按钮,并添加点击事件,点击按钮后即可执行命令调用kettle作业。

在这里插入图片描述


http://www.ppmy.cn/embedded/50293.html

相关文章

表面声波滤波器——叉指换能器(3)

叉指换能器(interdigital transducers,IDT) 是在压电基片表面激励和检测声表面波,从而实现电信号和声信号间的相互转换。 叉指换能器由在压电基片表面上沉积两组互相交错,周期分布的状金属条带(叉指电极)组成,每组电极和一个汇流…

【文档智能 RAG】RAG增强之路:增强PDF解析并结构化技术路线方案及思路

前言 现阶段,尽管大模型在生成式问答上取得了很大的成功,但由于大部分的数据都是私有数据,大模型的训练及微调成本非常高,RAG的方式逐渐成为落地应用的一种重要的选择方式。然而,如何准确的对文档进行划分chunks&…

docker命令记录

基本命令和参数 docker run: 运行一个新的容器实例。-itd: 组合参数,含义如下: -i: 以交互模式运行容器,保持标准输入打开。-t: 分配一个伪终端。-d: 后台运行容器,即使容器启动后依然返回控制台。 设备映射 --device/dev/dri…

C# Winform图形绘制

WinForms 应用程序中的控件是基于窗体的,当控件需要重绘时,它会向父窗体发送一个消息请求重绘。但是,控件本身并不直接处理绘制命令,所以你不能直接在控件上绘制图形。 解决方法: 重写控件的OnPaint方法使用CreateGr…

git原理解释,windows 10 / ubuntu 24.04 安装使用 github

git的原理 git是赫赫有名的Linux之父Linus Torvalds从2005年起开发的文件版本管理系统,掌控Linux内核这样一个最为重量级的世界产品的Linus为什么要开发这个东西呢?因为Linux系统由全世界的程序员协作维护,对源代码文件的版本控制管理的需求…

【高等数学】第一章习题:函数、极限与函数连续性

文章目录 一. 题型与解题方法1. 题型2. 求极限2.1. 常见等价无穷小2.2. 利用基本极限2.3. 极限的有理运算法则2.4. 洛必达2.5. 利用泰勒公式 二. 习题1. 函数间断点的考察3. 极限 一. 题型与解题方法 1. 题型 题型函数- 函数有界性、单调性及其奇偶性的判定- 复合函数极限- 无…

【C语言】解决C语言报错:Uninitialized Variable

文章目录 简介什么是Uninitialized VariableUninitialized Variable的常见原因如何检测和调试Uninitialized Variable解决Uninitialized Variable的最佳实践详细实例解析示例1:局部变量未初始化示例2:数组未初始化示例3:指针未初始化示例4&am…

Flink 命令行提交、展示和取消作业

Apache Flink 是一个流处理和批处理的开源框架,用于在分布式环境中执行无边界和有边界的数据流。你可以使用 Flink 的命令行界面(CLI)来提交、展示和取消作业。 提交作业 使用 Flink CLI 提交作业的命令格式通常如下: ./bin/fl…