-
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个答案 按时间排序 按投票排序
-
我这里可以的
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
-
(cd /home/dsadm/Ascential/DataStage/DSEngine/bin;dsjob -run -mode NORMAL -warn 0 dstest daochu)这个路径不需要绝对路径吗
2012年7月03日 16:51
相关推荐
- 将需要执行的Job Activity控件添加到序列作业中,这些控件代表了具体的DataStage作业。 - 编辑Job Activity,配置每个作业的输入输出,以及它们之间的依赖关系。 - 设置调度时间,可以基于日期、时间或者特定的...
1. 新建Sequence:Sequence是Datastage中的高级功能,允许并行执行多个job,提高处理效率。 2. 将并行job拖入设计面板:直观地构建job间的执行顺序和依赖关系。 3. 保存编译后运行:完成设计后,进行编译检查,无误...
3. 在代码中,我们首先检查JOB的执行状态,若状态为失败(状态码为3),则调用DSGetJobInfo函数获取错误信息。DSGetLogSummary函数用于获取指定类型的错误日志摘要,包括INFO、WARN和FATAL级别。 4. 对错误日志摘要...
21. **实现DataStage中的例行程序(Routines)**:编写C或Java代码,封装为例行程序,用于实现复杂逻辑或自定义功能。 22. **确定加载到数据仓库的作业顺序**:依据数据依赖性和业务逻辑,确保数据加载的正确性和时效...
根据提供的文档《Ascential DataStage Server Job Developer’s Guide》(Version 7.5.1),Datastage API 支持的主要功能包括但不限于: 1. **作业管理**:可以创建、读取、更新和删除作业。这些操作对于自动化和...
1. Transformer组件中的自定义函数:用户可以编写自己的Java或C++代码,封装成函数在Transformer中调用,实现特定的转换逻辑。 2. Parallel Sequence Job中的Joiner和Aggregator函数:用于在并行处理环境中合并和...
- `-linvocations`: 列出指定Job中的所有Invocation(调用实例)。 - `-lstages`: 列出指定Job中的所有Stage(阶段)。 - `-llinks`: 列出指定Job中的所有Link(连接)。 - `-projectinfo`: 列出指定项目的详细...
2. **Shell 脚本**:编写 Shell 脚本来调用 Datastage 的命令行工具,如 `dpjob` 或 `dpadmin`,启动和监控 Job 的执行。 3. **调度器**:可以使用 Unix 的 cron 服务或其他调度工具定时运行 Shell 脚本,实现自动化...
在数据集成领域,IBM WebSphere DataStage 是一款强大的图形化工具,用于执行ETL(提取、转换、加载)任务。DataStage 提供了一个名为 DataStage BASIC 的编程语言,允许开发人员自定义功能函数以满足特定的数据处理...
此外,DataStage还提供了作业序列(Job Sequence)来管理作业间的依赖关系,以及基本语言用于自定义函数,甚至可以调用外部脚本语言来处理复杂任务。调度功能确保作业按预定时间执行,同时还包括数据源管理和调试...
- **发布为服务**:RTI Job可以发布为RTI服务,如Web Service,使得其他应用程序能够调用执行数据处理任务。 - **三种类型**:RTI Job分为三类,无RTI输入和输出组件、仅RTI输出组件、以及同时含RTI输入和输出组件...
- **调用DataStage作业子脚本**:在一个主作业中调用多个子作业,实现任务分解和模块化管理。 #### 3.5 IBM InfoSphere DataStage 经验总结 通过使用DataStage进行数据处理作业的开发,可以总结出以下几点经验: ...
这通常通过创建一个简单的Server Job来完成,该Job包含一个Transformer Stage,用于调用自定义函数。 4. 重用函数:一旦函数开发完毕并通过测试,可以将其保存在库中供其他Job或Stage重用,提高代码复用性,降低...