nodejs, java中执行shell命令并拿到输出内容

栏目: Node.js · 发布时间: 6年前

内容简介:公司用的jenkins在配置的时候全都是脚本, 然后我就想着能否用开发语言调用linux上的命令拿到输出内容, 这样不就可以做一个日志监控站了吗!然后就折腾了一下, 实现了nodejs和java里的用法nodejs实现方法

公司用的jenkins在配置的时候全都是脚本, 然后我就想着能否用开发语言调用 linux 上的命令拿到输出内容, 这样不就可以做一个日志监控站了吗!

然后就折腾了一下, 实现了nodejs和 java 里的用法

nodejs实现方法

var iconv = require("iconv-lite");
var spawn = require("child_process").spawn;

// 这货第一个参数就是命令本身, 后面的参数要放在数组里, 我最开始把 ping baidu.com 当成命令了, -t 当成参数, 死活没有数据输出
var processObj = spawn("ping", ["baidu.com", "-t"]); // 这个方法后面有个参数可以指定编码, 我这设置没有用..

// 监听执行命令输出内容事件
processObj.stdout.on("data", function(thunk) {
  console.log(iconv.decode(thunk, "gbk"));
});

processObj.stderr.on("data", function(data) {
  console.log("stderr: ", data);
});

processObj.on("close", function(code) {
  console.log("close: ", code);
});

processObj.on("exit", function(code) {
  console.log("exit: ", code);
});

先安装一下依赖 iconv-lite 然后直接使用nodejs运行即可, 如果你的运行平台是mac或者linux, 这个包是不用安装的, 它主要是用来转码的

在测试的时候发现windows上输出内容中文乱码, 就找到了这个东西来转码

原接文链: https://tomoya92.github.io/2019/05/22/nodejs-java-shell/

java实现方法

String command = "ping baidu.com -t";
Process process = Runtime.getRuntime().exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), Charset.forName("GBK"))); // 这里编码如果是mac或者linux可以使用utf-8
String line;
while ((line = br.readLine()) != null) {
    System.out.println(line);
}

通过上面代码可以拿到执行命令后的内容, 然后结合websocket输出到页面上, 实现一个日志查询系统相当的爽, 不可有个问题, 没有啥办法能让它停下来…

也可以通过执行 wget 或者 axel 命令来实现一个下载任务

原文链接:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

网络共和国

网络共和国

[美] 凯斯·桑斯坦 / 黄维明 / 上海人民出版社 / 2003-6-1 / 15.00元

本书主要讨论网络中的民主问题。网络技术已经深刻地影响了我们的生活,我们随时可以获得我们需要的信息,我们也随时可以与别人联系,那么网络技术是不是就是民主的福音呢?作者回答说不,他认为通过网络人们更容易获得的是自己喜欢的信息,而拒绝接受自己不喜欢的信息,事实上人们得到的是窄化的信息,很多的网站也不和与自己立场相反的网站链接。而在一个真正的民主的环境中,信息应是多元的并且不是我们事先选择的,在其中我们还......一起来看看 《网络共和国》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具