في Go، يعد تنفيذ الأوامر الخارجية وإدارة المدخلات والمخرجات مهمة شائعة. ومع ذلك، عند التعامل مع الأوامر التي تطالب بإدخال المستخدم، مثل "تسجيل الدخول"، قد يكون من الصعب أتمتة هذه المدخلات برمجيًا.
أحد الأساليب لحل هذه المشكلة هو الكتابة مباشرة إلى الإدخال القياسي للأمر (stdin ) باستخدام المخزن المؤقت للبايت. دعنا نتعمق في الحل المقدم:
login := exec.Command(cmd, "login")
var b bytes.Buffer
b.Write([]byte(username "\n" pwd "\n"))
login.Stdout = os.Stdout
login.Stdin = &b
login.Stderr = os.Stderr
في هذا الكود، نقوم بإنشاء بايت.Buffer اسمه b ونقوم بتسلسل اسم المستخدم وكلمة المرور بأسطر جديدة. نقوم بعد ذلك بتعيين b لحقل Stdin الخاص بأمر تسجيل الدخول، مما يؤدي بشكل فعال إلى توصيل المخزن المؤقت بتدفق إدخال الأمر.
عند تنفيذ الأمر، سيقرأ الأحرف من b حتى يواجه سطرًا جديدًا، ويفسر هذا على أنه اسم المستخدم. سيتم بعد ذلك قراءته حتى السطر الجديد التالي، مع التعامل مع هذا على أنه كلمة المرور. من خلال الكتابة يدويًا إلى المخزن المؤقت بهذه الطريقة، فإننا نتجاوز الحاجة إلى تفاعل المستخدم ونوفر المدخلات الضرورية برمجيًا.
تذكر أن stdin عبارة عن مخزن مؤقت للأحرف، وعادةً ما تقرأ الأوامر الإدخال حتى تواجه أسطرًا جديدة. تتيح لك هذه التقنية تخزين المدخلات مؤقتًا وتسلسلها قبل إرسالها إلى أوامر خارجية، مما يؤدي إلى أتمتة عملية الإدخال دون الحاجة إلى تدخل يدوي من المستخدم.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3