从PhantomJS获取unix主机名

时间:2016-03-30 17:00:13

标签: javascript unix command phantomjs

我使用PhantomJS开发一个将在Unix服务器上执行的脚本。 从PhantomJS,我想得到hostname命令返回的Unix系统的名称。

我这样做

var childProcess = require('child_process')

childProcess.execFile("hostname", [""], null, function (err, stdout, stderr) {
  console.log("execFileSTDOUT:", JSON.stringify(stdout))
  console.log("execFileSTDERR:", JSON.stringify(stderr))
  console.log("execFileERR:", JSON.stringify(err))
})

但没有显示任何内容。

2 个答案:

答案 0 :(得分:1)

请记住execFile是异步的。如果您要退出PhantomJS脚本,则需要在回调中执行此操作。此外,""不是有效的主机名。您可以使用空参数列表:

var childProcess = require('child_process')

childProcess.execFile("hostname", [], null, function (err, stdout, stderr) {
  console.log("execFileSTDOUT:", JSON.stringify(stdout))
  console.log("execFileSTDERR:", JSON.stringify(stderr))
  console.log("execFileERR:", JSON.stringify(err))
  phantom.exit();
})

输出:

execFileSTDOUT: "myhostname\n"
execFileSTDERR: ""
execFileERR: null

使用PhantomJS 1.9.7和2.0.1进行测试。

答案 1 :(得分:0)

丢失第2和第3个参数(你没有发送任何东西,所以没关系)

var childProcess = require('child_process')

childProcess.execFile("hostname", [], {}, function (err, stdout, stderr) {
  console.log("execFileSTDOUT:", JSON.stringify(stdout))
  console.log("execFileSTDERR:", JSON.stringify(stderr))
  console.log("execFileERR:", JSON.stringify(err))
})

// execFileSTDOUT: "YourPuterName\n"