java在linux中执行shell脚本,用telnet检测指定IP的端口是否可以连接上 80

java在linux中执行shell脚本,用telnet检测指定IP的端口是否可以连接上。java中的代码是String[]cmdA={"/bin/sh","-c",cm... java在linux中执行shell脚本,用telnet检测指定IP的端口是否可以连接上。java中的代码是
String[] cmdA = { "/bin/sh", "-c", cmd };
Process process = Runtime.getRuntime().exec(cmdA);
然后获取process的流来分析结果。
如果用"ping 192.168.1.3 -c 10"作为cmd传入时,能得到返回的结果。

我用"telnet 192.168.1.3 8090"作为cmd传入时,服务器那边运行会直接进入telnet了,没有返回结果。
求得大神指导下,要在telnet命令后加什么参数还是怎么做,才能让telnet尝试连接得到连接是否成功的结果后直接断开并返回结果。
展开
 我来答
帐号已注销
2015-02-12 · TA获得超过1562个赞
知道小有建树答主
回答量:674
采纳率:0%
帮助的人:820万
展开全部
你可以增加两个进程,一个用来监视telnet的输出,另外一个用来监视是不是有错。你分析那个telnet的输出就好了。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class ExcuteThread extends Thread {
private String name;
public ExcuteThread(String name) {
this.name = name;
}
@Override
public void run() {
try {
Process p = Runtime.getRuntime().exec(name);
InputStream fis = p.getInputStream();
final BufferedReader brError = new BufferedReader(
new InputStreamReader(p.getErrorStream(), "gb2312"));
InputStreamReader isr = new InputStreamReader(fis, "gb2312");
final BufferedReader br = new BufferedReader(isr);
Thread t1 = new Thread() {
public void run() {
String line = null;
try {
while ((line = brError.readLine()) != null) {
// System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (brError != null)
brError.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
};
Thread t2 = new Thread() {
public void run() {
String line = null;
try {
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null)
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
};
t1.start();
t2.start();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} finally {
}
}
}
更多追问追答
追问
呃,我要的不是这个java代码,是shell命令,执行telnet会直接进入telnet连接了,所以一直收不到到返回结果,我是想在命令里加什么可以让它连接后返回结果。
追答
我的意思就是你获得telnet执行的信息,比如下面就是telnet 127.0.0.1的信息。
Trying 127.0.0.1…

Connected to serve. somewhere. com.

Escape character is '?]'.

“TurboLinux release 4. 0 (Colgate)

kernel 2.0.18 on an I486 
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
快又稳
2024-10-28 广告
在Linux环境下配置基于域名的虚拟主机,需安装Apache或Nginx等Web服务器,并编辑配置文件。以Apache为例,需创建虚拟主机配置文件,指定域名、文档根目录等,然后启用该配置文件并重启Apache服务。同样,Nginx也需在相应... 点击进入详情页
本回答由快又稳提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式