从 PhantomJS 获取 unix 主机名

Get unix hostname from 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))
})

但是没有任何显示。

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

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"

记住 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 进行测试。