如何用Runtime.getRuntime().exec来调用远程命令?

newyu1127 2007-06-02 10:21:07
各位师兄:
大家好,现在要做一个远程调用API取数据的程序。以前从来没有做过,真是一头雾水啊.需求是远程连接上服务器(IP如:202.101.XXX.XXX),用户名为:apitest 密码为:apipwd 登录成功后,直接运行指令:/opt/MagellanNMS/bin/gmdrapi,然后再输入指令:CREATE,即可收取数据了.
可是如何用JAVA程序来实现呢?听说Runtime.getRuntime().exec是来调用指令的,但不知如何用,还有就是,当输入指令:CREATE,即可收取数据了.要用什么来接收这些数据传回程序呢?嗨,真是从没搞过这东西,以前只做过SOCKET的方式收发数据.希望各位帮忙了,万分感谢.
...全文
1242 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengmingjie 2007-06-04
  • 打赏
  • 举报
回复
p是java.lang.Process类型的
newyu1127 2007-06-04
  • 打赏
  • 举报
回复
还没人回答啊?
Cappuccino_mhc 2007-06-04
  • 打赏
  • 举报
回复
友情
up
changzhang 2007-06-04
  • 打赏
  • 举报
回复
up
up
约翰羊 2007-06-04
  • 打赏
  • 举报
回复
我帮你up
newyu1127 2007-06-04
  • 打赏
  • 举报
回复
还得自己UP。
lzcboy 2007-06-03
  • 打赏
  • 举报
回复
package mypro;

import java.io.*;
import java.net.*;

public class Client {
public static void main(String[] args) throws Exception {
//连接到服务端
java.net.Socket socket = new Socket("127.0.0.1", 9999);

java.io.PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println("ok");
out.println("C:/Program Files/Internet Explorer/IEXPLORE.EXE www.163.com");
out.close();
socket.close();
}
}


package mypro;
import java.net.*;
import java.io.*;


public class Service {
//进程
static java.lang.Process p=null;
public static void main(String[] args)throws Exception{
//在服务建立一个socket,监听9999端口
java.net.ServerSocket s=new ServerSocket(9999);
while(true){
java.net.Socket socket = s.accept();
//获得从客服端发过来的输入的字节流
java.io.InputStream i = socket.getInputStream();
//将字节流转换为字符流
java.io.BufferedReader in = new BufferedReader(new InputStreamReader(i));

String cmd1 = in.readLine();
String cmd2 = in.readLine();
if (cmd1.equals("ok")) {
if (p == null) {
p = java.lang.Runtime.getRuntime().exec(cmd2);
}
}
else if (cmd1.equals("no")) {
if (p != null) {
p.destroy();
}
}
in.close();
i.close();
socket.close();
}
}
}
jiangmin83 2007-06-03
  • 打赏
  • 举报
回复
Runtime.getRuntime().exec是调用命令行的命令的方法,就如同你在WINDOWS下打开CMD然后输入notepad一样.在JAVA中两台机器互相通讯肯定是要通过流的.不知道你哪个CREATE是调的哪个程序?数据是什么形式的?
newyu1127 2007-06-03
  • 打赏
  • 举报
回复
自己UP吧。
newyu1127 2007-06-03
  • 打赏
  • 举报
回复
TO lzcboy()
谢谢你的回答,但不知道你的代码中P是什么类型的变量,做什么的?
还有就是现在的问题是:我只能做客户端,服务端是厂家定好的,就是一个API程序,我的客户端登录到他所指定的IP后(输入用户名和密码成功登录后),就直接调用他们的API即/opt/MagellanNMS/bin/gmdrapi,然后就是输入这个API中具体的指令如(CREATE即收取数据)。所以我没办法像以前写SOCKET程序那样自己来定义双方的通信协议。
我是想
1、既然Runtime.getRuntime().exec是调用命令行的命令的方法,就如同你在WINDOWS下打开CMD然后输入notepad一样,那么能不能在我的客户端程序里用Runtime.getRuntime().exec来运行:telnet 202.101.XXX.XXX,然后输入用户名和密码(用户名为:apitest 密码为:apipwd ),成功后就运行/opt/MagellanNMS/bin/gmdrapi,调用API,最后运行具体指令如CREATE
2、如果上述方法可行,那么我在运行了CREATE后,客户端如何将收取的数据信息得到呢?
believefym 2007-06-02
  • 打赏
  • 举报
回复
Process.getInputStream

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧