شل النصي ل telnet وتشغيل الأوامر
القضية
لقد قمت بإعداد برنامج نصي يمكنه تشغيل telnet تلقائيًا وتشغيل الأوامر على الجهاز الآخر وإنهاء جلسة telnet دون أي تدخل من المستخدم ؛ يقوم المستخدم فقط بتشغيل البرنامج النصي أو الاتصال به من برنامج نصي آخر.
ولكن عليك تثبيت حزم EXPECT و TCL على نظام Unix الخاص بك.
يحتوي البرنامج النصي على التعليمات التالية:
#! / usr / local / bin / expect -f #### / usr / local / bin / expect هو الدليل حيث تم تثبيت توقع
log_user 0 #### يستخدم هذا الأمر لإخفاء المحادثة بين البرنامج النصي والجهاز الآخر
set address [lindex $ argv 0] ### قم بتعيين المعلمة الأولى التي تم تمريرها أثناء استدعاء البرنامج النصي إلى عنوان $
قم بتعيين اسم المستخدم [lindex $ argv 1] ### قم بتعيين المعلمة الثانية التي تم تمريرها أثناء استدعاء البرنامج النصي إلى اسم المستخدم $
set password [lindex $ argv 2] ### قم بتعيين المعلمة الثالثة التي تم تمريرها أثناء استدعاء البرنامج النصي إلى $ password
spawn telnet $ {address} ### بدء جلسة telnet إلى الجهاز باستخدام عنوان IP = $
### بدء محادثة مع الجهاز:
نتوقع "تسجيل الدخول:"
إرسال - "$ {اسم المستخدم} \ r"
نتوقع "كلمة المرور:"
إرسال - "$ {password} \ r"
توقع "$"
send - "#! / bin / ksh \ r" ### تعلن عن استخدام القشرة (اختياري)
توقع "$"
إرسال - "### اكتب لها أي أمر تريد تنفيذه"
توقع "$"
send - "exit \ r" ### إنهاء جلسة telnet والخروج من البرنامج النصي
لتنفيذ هذا البرنامج النصي ، كتبت:
$ expect_script "address" "username" "password" ### اسم البرنامج النصي هو "expect_script"
ولكن قبل أن تقوم بالاتصال بالبرنامج النصي المتوقع ، يجب أن تجعل البرنامج النصي القابل للتنفيذ قابلاً للتنفيذ ، ويمكن القيام بذلك عن طريق الكتابة:
$ chmod + x expect_script
حل
جرب هذا:
#! / usr / local / bin / تتوقع نتوء تيل نتوقع "تسجيل الدخول:" send "\ n" expect "كلمة المرور:" send "\ n" send "bash \ n" send "cd / opt \ n" send "ls - لتر \ n "؟ (إذا كنت لا تعطي \ n ، فسوف ينتظر ردك أو يجب عليك إدخال إدخال يدويًا). تفاعل
كيفية تنفيذ الأمر "توقع" تتوقع -f
على سبيل المثال: نتوقع -F
ملحوظة
بفضل ZooZoo على هذه النصيحة في المنتدى.