2016-03-30 3 views
0

Я использую PhantomJS для разработки скрипта, который будет выполнен на сервере Unix. От PhantomJS я хочу получить имя системы Unix, возвращенное командой hostname.Получить имя хоста unix от 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)) 
}) 

Но ничто не дисплей.

+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.

+0

OK с PhantomJS 2.0.0. Как вы думаете, можно ли синхронно выполнять 'execFile'? – LeMoussel

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" 
+0

Я получил эту ошибку: Ошибка: несовместимый тип аргументов (-ов) при вызове _start(); кандидатами были _start (QString, QStringList) : 95 in _start : 95 in execFile – LeMoussel

+0

Какая версия узла вы используете? – Wainage

+0

PhantomJS V 2.0.0 на Ubuntu 15.04 - ARMv7 Процессор rev 2 (v7l) – LeMoussel

Смежные вопросы