0 0

Java中远程调用DataStage的job,job没有执行3

RemoteShellTool t = new RemoteShellTool(***,***,***);//连接远程服务的工具类          
System.out.println(t.login());
        String result1 = t.exec("(cd /home/dsadm/Ascential/DataStage/DSEngine/bin;dsjob -run -mode NORMAL -warn 0 dstest daochu)");
        System.out.println(result1);

经测试,可以连接登录远程机(AIX系统),就无法执行,而且该job在远程命令窗口手动是可以执行的,有人知道原因吗?


问题补充:什么原因哇?
2012年7月03日 16:43

3个答案 按时间排序 按投票排序

0 0

我这里可以的

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;

import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;

/**
* 远程Shell脚本执行工具
*
* @author Administrator
*/
public class RemoteShellTool {

        private Connection conn;
        private String ipAddr;
        private String charset = Charset.defaultCharset().toString();
        private String userName;
        private String password;

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

        /**
         * 登录远程Linux主机
         *
         * @return
         * @throws IOException
         */
        public boolean login() throws IOException {
                conn = new Connection(ipAddr);
                conn.connect(); // 连接
                return conn.authenticateWithPassword(userName, password); // 认证
        }

        public static void main(String[] args) {
                try {
                RemoteShellTool tool = new RemoteShellTool("127.0.0.1", "xxx", "xxx", "utf-8");
               
                    System.out.println(tool.login());
                    System.out.println(tool.exec("cd tmp/tomcat7/bin && ls"));
                    System.out.println(tool.exec("cd tmp/tomcat7/bin && ./startup.sh"));
                   
                } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
        }
       
        /**
         * 执行Shell脚本或命令
         *
         * @param cmds
         *            命令行序列
         * @return
         */
        public String exec(String cmds) {
                InputStream in = null;
                String result = "";
                try {
                        if (this.login()) {
                                Session session = conn.openSession(); // 打开一个会话
                                session.execCommand(cmds);
                                in = session.getStdout();
                                result = this.processStdout(in, this.charset);
                                conn.close();
                        }
                } catch (IOException e1) {
                        e1.printStackTrace();
                }
                return result;
        }

        /**
         * 解析流获取字符串信息
         *
         * @param in
         *            输入流对象
         * @param charset
         *            字符集
         * @return
         */
        public String processStdout(InputStream in, String charset) {
                byte[] buf = new byte[1024];
                StringBuffer sb = new StringBuffer();
                try {
                        while (in.read(buf) != -1) {
                                sb.append(new String(buf, charset));
                        }
                } catch (IOException e) {
                        e.printStackTrace();
                }
                return sb.toString();
        }
      
}

2012年7月04日 10:42
0 0

dsjob 前面加上 ./试试, ./dsjob  -run -mode NORMAL -warn 0 dstest daochu

2012年7月03日 19:04
0 0

(cd /home/dsadm/Ascential/DataStage/DSEngine/bin;dsjob -run -mode NORMAL -warn 0 dstest daochu)这个路径不需要绝对路径吗

2012年7月03日 16:51

相关推荐

    经验总结_DataStage

    - 将需要执行的Job Activity控件添加到序列作业中,这些控件代表了具体的DataStage作业。 - 编辑Job Activity,配置每个作业的输入输出,以及它们之间的依赖关系。 - 设置调度时间,可以基于日期、时间或者特定的...

    Datastage开发经验.pdf

    1. 新建Sequence:Sequence是Datastage中的高级功能,允许并行执行多个job,提高处理效率。 2. 将并行job拖入设计面板:直观地构建job间的执行顺序和依赖关系。 3. 保存编译后运行:完成设计后,进行编译检查,无误...

    Datastage Routine示例---提取JOB错误信息录入到数据库.doc

    3. 在代码中,我们首先检查JOB的执行状态,若状态为失败(状态码为3),则调用DSGetJobInfo函数获取错误信息。DSGetLogSummary函数用于获取指定类型的错误日志摘要,包括INFO、WARN和FATAL级别。 4. 对错误日志摘要...

    datastage面试300题

    21. **实现DataStage中的例行程序(Routines)**:编写C或Java代码,封装为例行程序,用于实现复杂逻辑或自定义功能。 22. **确定加载到数据仓库的作业顺序**:依据数据依赖性和业务逻辑,确保数据加载的正确性和时效...

    Datastage API

    根据提供的文档《Ascential DataStage Server Job Developer’s Guide》(Version 7.5.1),Datastage API 支持的主要功能包括但不限于: 1. **作业管理**:可以创建、读取、更新和删除作业。这些操作对于自动化和...

    datastage function

    1. Transformer组件中的自定义函数:用户可以编写自己的Java或C++代码,封装成函数在Transformer中调用,实现特定的转换逻辑。 2. Parallel Sequence Job中的Joiner和Aggregator函数:用于在并行处理环境中合并和...

    datastage server job之dsjob 命令

    - `-linvocations`: 列出指定Job中的所有Invocation(调用实例)。 - `-lstages`: 列出指定Job中的所有Stage(阶段)。 - `-llinks`: 列出指定Job中的所有Link(连接)。 - `-projectinfo`: 列出指定项目的详细...

    datastage技术文档

    2. **Shell 脚本**:编写 Shell 脚本来调用 Datastage 的命令行工具,如 `dpjob` 或 `dpadmin`,启动和监控 Job 的执行。 3. **调度器**:可以使用 Unix 的 cron 服务或其他调度工具定时运行 Shell 脚本,实现自动化...

    DataStage BASIC 语言开发实践

    在数据集成领域,IBM WebSphere DataStage 是一款强大的图形化工具,用于执行ETL(提取、转换、加载)任务。DataStage 提供了一个名为 DataStage BASIC 的编程语言,允许开发人员自定义功能函数以满足特定的数据处理...

    ETL DataStage实现

    此外,DataStage还提供了作业序列(Job Sequence)来管理作业间的依赖关系,以及基本语言用于自定义函数,甚至可以调用外部脚本语言来处理复杂任务。调度功能确保作业按预定时间执行,同时还包括数据源管理和调试...

    商业智能开发案例(BI)3

    - **发布为服务**:RTI Job可以发布为RTI服务,如Web Service,使得其他应用程序能够调用执行数据处理任务。 - **三种类型**:RTI Job分为三类,无RTI输入和输出组件、仅RTI输出组件、以及同时含RTI输入和输出组件...

    基于DataStage的大批量数据处理优化策略的设计与实现【毕业论文】.docx

    - **调用DataStage作业子脚本**:在一个主作业中调用多个子作业,实现任务分解和模块化管理。 #### 3.5 IBM InfoSphere DataStage 经验总结 通过使用DataStage进行数据处理作业的开发,可以总结出以下几点经验: ...

    DataStageBASIC语言开发实践.pdf

    这通常通过创建一个简单的Server Job来完成,该Job包含一个Transformer Stage,用于调用自定义函数。 4. 重用函数:一旦函数开发完毕并通过测试,可以将其保存在库中供其他Job或Stage重用,提高代码复用性,降低...

Global site tag (gtag.js) - Google Analytics