2016-03-30 23 views
0

Unix sunucusunda çalıştırılacak bir komut dosyası geliştirmek için PhantomJS kullanıyorum. PhantomJS'den, hostname komutu tarafından döndürülen Unix sisteminin adını almak istiyorum.Unix sunucu adından unix ana bilgisayar adı alın

Bu

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)) 
}) 

yapmak Ama hiçbir şey ekranıdır.

+0

Bu sizin tam metniniz mi? Çok erken çıktığından şüpheleniyorum. –

cevap

1

execFile asenkron olduğunu unutmayın (tamam nedenle aradan göndermiyoruz) 2. ve 3. parametrelerini kaybettin. PhantomJS komut dosyanızdan çıkıyorsanız, bunu geri aramada yapmanız gerekir. Ayrıca, "" geçerli bir ana bilgisayar adı değil. Boş bir argüman listesini kullanabilirsiniz:

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(); 
}) 

Çıktı:

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

PhantomJS 1.9.7 ve 2.0.1 ile test edilmiştir.

+0

PhantomJS 2.0.0 ile tamam. Sence, "execFile" senkronize olarak yürütmek mümkün mü? – LeMoussel

0

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

Bu hatayı aldım: Hata: _start() çağrısı için uyumsuz argüman türü (ler); Adaylar _start (QString, QStringList) : 95'de _Start : 95 içinde execFile – LeMoussel

+0

Hangi düğüm sürümünü çalıştırıyorsunuz? – Wainage

+0

Ubuntu üzerinde PhantomJS V 2.0.0 15.04 - ARMv7 İşlemci rev2 (v7l) – LeMoussel