سؤال

لدي سطر أمر Linux أحتاج إلى تنفيذ Witin إما PHP أو JavaScript (PHP يفضل.)

الأمر هو

keygen AB3554C1D1971DB7 \pc_code 365

ومع ذلك، أود أن استبدل \pc_code مع سلسلة مثل PCCode $ حيث يدخل المستخدم رمز الكمبيوتر الذي تم إنشاؤه. هذا هو مشروع شرعي، ولكن وجود مشكلة مع المبدعين في البرنامج يمنحني بالتأكيد.

الرجاء المساعدة!

هل كانت مفيدة؟

المحلول

قد يكون هذا البرنامج مكتوبا بشكل سيء ويخرج معلوماته إلى Stderr بدلا من Stdout. أو يمكن أن يكون ذلك فشل و (بشكل صحيح) طباعة رسالة الخطأ إلى Stderr. في كلتا الحالتين، لن يتم التقاط Shell_Exec Stderr. ومع ذلك، يجب أن تكون قادرا على التقاط Stderr عن طريق إضافة "2>&1"حتى نهاية الأمر الخاص بك, ، بمعنى آخر:

$result = shell_exec('keygen AB3554C1D1971DB7 \pc_code 365 2>&1');
echo '<pre>'.htmlspecialchars($result).'</pre>';

يحرر: من أجل الاستمرارية، ما الذي تم إصلاح المشكلة هو شيء مذكور في تعليق لإجابة أخرى أدناه:

ربما لا يحب الخلفية العارية؟ بامكانك ان تحاول "\\pc_code"

نصائح أخرى

يمكنك استخدام shell_exec ():

$cmd = sprintf("keygen AB3554C1D1971DB7 %s 365", 
               escapeshellarg($pccode));
$result = shell_exec($cmd);

كلما قمت بتنفيذ الأوامر الخارجية، يجب أن تكون حذرا للغاية لتجنب حقن الأمر. يمكنك منع هذا باستخدام Escapeshellarg ().

القي نظرة على exec.

تنفيذ أمر Linux غير ممكن حقا من JavaScript (ولا يجب أن يكون). على افتراض أنك تشير إلى JavaScript قيد التشغيل على مستعرض الويب العميل، فلن يكون هناك نموذج أمان من شأنه أن يبقي الأشخاص في مأمن من الوصول إلى سطر الأوامر الخبيثة. PHP هي قصة مختلفة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top