2017-08-02 1 views
0

ich den folgenden Code leite:Unterdrück STDOUT mit Knoten child_process

var exec = require('child_process').exec; 
var command = "security set-key-partition-list -S apple-tool:,apple: -s -k password /path/to/keychain/login.keychain-db"; 
exec(serverConfig.securityCall, function (error, stdout, stderr) { 
    if (error !== null) { 
     console.log('exec error: ' + error); 
     console.log('STDERR: ' + stderr); 
     console.log('STDOUT: ' + stdout); 
    } 
}); 

ich den Fehler: exec error: Error: stdout maxBuffer exceeded.

Gibt es eine Möglichkeit, den stdout zu unterdrücken? Ich brauche es nicht. Ich sah diesen Beitrag: Stdout buffer issue using node child_process

So habe ich es zu einem spawn

var spawn = require('child_process').spawn; 
var child = spawn('security', ['set-key-partition-list', '-S apple-tool:,apple: -s -k password /path/to/keychain/login.keychain-db'], {stdio:['ignore', 'ignore', 'pipe']}); 

child.stderr.on('data', function (data) { 
    console.log('stderr: ' + data); 
    stderr = 'stderr: ' + data 
}); 

child.on('close', function (code) { 
    console.log('child process exited with code ' + code); 
    if (!code) { //0 = success 1= error 
     console.log("SUCCESS"); 
    } else { 
     console.log('STDERR: ' + stderr); 
    } 
}); 

aber ich bekomme diese Fehlermeldung:

stderr: password to unlock default: security: SecKeychainItemSetAccessWithPassword: The user name or passphrase you entered is not correct. 

Wenn ich dies von der Kommandozeile ausführen funktioniert es, so Ich weiß, dass mein Passwort korrekt ist. (Passwort und Pfad zum Schlüsselbund wurden aus Sicherheitsgründen gelöscht). Wie kann ich das mit spawn oder exec arbeiten?

Antwort

1

Der Fehler, den Sie erhalten, kommt von Ihrer security Anwendung, nicht von Node. Es gibt einen kniffligen Teil der Verwendung von spawn. Jede einzelne Option sollte ein separates Array-Element sein.

Also das Array-Element sollte auf mehrere Elemente

'-S apple-tool:,apple: -s -k password /path/to/keychain/login.keychain-db' 

So etwas wie

['-S', 'apple-tool:,apple:', '-s', '-k', 'password', '/path/to/keychain/login.keychain-db'] 

Ehrlich getrennt werden Ich verstehe nicht, warum es nicht gut in der Dokumentation erklärt.

+0

Das hat funktioniert, vielen Dank. –

Verwandte Themen