আবশ্যকতা
এর জন্য নোড.জেএস 7 বা তারপরে প্রতিশ্রুতি এবং অ্যাসিঙ্ক / অ্যাওয়েটের সহায়তার প্রয়োজন হবে।
সমাধান
একটি মোড়ক ফাংশন তৈরি করুন যা child_process.exec
কমান্ডের আচরণ নিয়ন্ত্রণের জন্য প্রতিশ্রুতি দেয় ।
ব্যাখ্যা
প্রতিশ্রুতি এবং একটি অ্যাসিনক্রোনাস ফাংশন ব্যবহার করে, আপনি কলব্যাক নরকের মধ্যে না পড়ে এবং একটি সুন্দর ঝরঝরে এপিআই দিয়ে আউটপুট ফেরত শেলের আচরণের নকল করতে পারেন। await
কীওয়ার্ডটি ব্যবহার করে আপনি এমন একটি স্ক্রিপ্ট তৈরি করতে পারেন যা সহজেই পড়া যায়, যদিও এখনও কাজটি child_process.exec
সম্পন্ন করতে সক্ষম হয়।
কোড নমুনা
const childProcess = require("child_process");
/**
* @param {string} command A shell command to execute
* @return {Promise<string>} A promise that resolve to the output of the shell command, or an error
* @example const output = await execute("ls -alh");
*/
function execute(command) {
/**
* @param {Function} resolve A function that resolves the promise
* @param {Function} reject A function that fails the promise
* @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
*/
return new Promise(function(resolve, reject) {
/**
* @param {Error} error An error triggered during the execution of the childProcess.exec command
* @param {string|Buffer} standardOutput The result of the shell command execution
* @param {string|Buffer} standardError The error resulting of the shell command execution
* @see https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback
*/
childProcess.exec(command, function(error, standardOutput, standardError) {
if (error) {
reject();
return;
}
if (standardError) {
reject(standardError);
return;
}
resolve(standardOutput);
});
});
}
ব্যবহার
async function main() {
try {
const passwdContent = await execute("cat /etc/passwd");
console.log(passwdContent);
} catch (error) {
console.error(error.toString());
}
try {
const shadowContent = await execute("cat /etc/shadow");
console.log(shadowContent);
} catch (error) {
console.error(error.toString());
}
}
main();
নমুনা আউটপুট
root:x:0:0::/root:/bin/bash
[output trimmed, bottom line it succeeded]
Error: Command failed: cat /etc/shadow
cat: /etc/shadow: Permission denied
এটি অনলাইনে চেষ্টা করুন।
Repl.it ।
বাহ্যিক সংস্থান
প্রতিশ্রুতি ।
child_process.exec
।
নোড.জেএস সাপোর্ট টেবিল ।