2015-05-18 3 views
0

У меня есть команда linux для создания значения аргумента, но я не знаю, как ее преобразовать в nodejs. Это Linux командной строки:Создать base64 md5 хэш в nodejs, эквивалентный этой команде openssl

echo -n '2147483647/s/link127.0.0.1 secret' | \ 
openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d = 

и результат, когда выполнить это в терминале

_e4Nc3iduzkWRm01TBBNYw 

Пожалуйста, скажите мне, как это сделать в nodejs без дочернего процесса.

+0

Вы спрашиваете, как выполнить команду оболочки в пределах JavaScript (или node.js, я исхожу из тега), или вы спрашиваете, как его преобразовать, чтобы делать то, что делает полностью в javascript? – childofsoong

+0

Извините, я хочу сказать, что я хочу, чтобы функция в узле делала значение аргумента без выполнения командной строки linux (не используйте дочерний процесс или что-то в этом роде). –

+0

О, ну, я просто ответил, используя детский процесс, извините! – Brian

ответ

0

Совершено

var mysecretkey = "secret"; 
    var path = "/s/link"; 
    var ip = '127.0.0.1'; 
    var time = '2147483647'; 
    var path = time + path + ip + ' ' + mysecretkey; 
    var crypto = require('crypto'); 
    var md5sum = crypto.createHash('md5'); 
    var d = md5sum.update(path).digest('base64'); 
    //#echo -n '2147483647/s/link127.0.0.1 secret' | openssl md5 -binary | openssl base64 | tr +/ -_ | tr -d = 
    var test = d.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, ''); 
    console.log(test); 
0

Любая команда терминала может быть выполнена в Node.js с помощью exec или spawn. В этом случае exec, вероятно, будет вашим лучшим выбором. Следуйте рисунок ниже просто заменить мою команду, чтобы перечислить каталоги в/дома/имя пользователя с тем, что команду, которую вы хотите:

var exec = require('child_process').exec; 

exec("ls /home/username", function (error, stdout, stderr) { 
    console.log("error: ", error); 
    console.log("stdout: ", stdout); 
    console.log("stderr: ", stderr); 
}); 
+0

Я думаю, может быть, это хорошее решение этой проблемы. –

+0

Но когда я хочу выполнить на платформе Windows, я думаю, что это не сработает. –

+0

https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback, конкретная команда должна соответствовать любой ОС, над которой вы работаете, но exec независим от платформы – Brian