ในบทช่วยสอนนี้งานจะเป็นแบบอัตโนมัติโดยใช้ Expect.


คาดว่าเป็นภาษาสคริปต์อัตโนมัติ มันช่วยให้คุณเลียนแบบการกดแป้นแต่ละครั้งในเซสชัน คุณพิมพ์คำสั่งที่จะส่งมอบและตอบสนองต่อการคาดการณ์ (หรือคาดหวัง) เมื่อได้รับคำตอบที่คาดไว้คุณจะต้องป้อนคำสั่งอื่น กระบวนการนี้ทำซ้ำจนกว่าจะมีการยกเลิกสคริปต์.

สคริปต์คาดหวังเป็นการสนทนาสองทางอัตโนมัติทั้งหมด ในสคริปต์การยกเว้นกล่องโต้ตอบจากคอมพิวเตอร์ทั้งการส่งและการรับจะถูกสคริปต์ การใช้สคริปต์ Expects ทั่วไปคือการทำให้เซสชัน SSH เป็นอัตโนมัติระหว่างเครื่องคอมพิวเตอร์กับเซิร์ฟเวอร์ระยะไกล.

การตั้งค่าความคาดหวัง

ยกเว้นมีให้เป็นชุดซอฟต์แวร์ที่ติดตั้งได้สำหรับ Linux distros ส่วนใหญ่ ใช้ตัวจัดการแพ็คเกจเพื่อดาวน์โหลดและติดตั้ง Expect พร้อมกับแพ็คเกจและ / หรือการอ้างอิงที่เกี่ยวข้อง.

หากคุณใช้ Ubuntu ให้ป้อนสตริงต่อไปนี้ที่พร้อมท์บรรทัดคำสั่งเพื่อติดตั้ง Expect:

$ apt-get install คาดหวัง

หากคุณใช้ CentOS ให้ป้อนข้อมูลต่อไปนี้:

# yum ติดตั้ง expect-devel

อาจใช้เวลาสักครู่ แต่เมื่อติดตั้งแล้วคาดว่าจะสามารถเรียกใช้จากเครื่อง.

การเขียนสคริปต์ SSH อย่างที่คาดหวัง

คุณจะต้องเขียนทั้งสองด้านของ “กล่องโต้ตอบ” ซึ่งหมายความว่าคุณต้องเขียนคำสั่งที่คุณต้องการส่งในเซสชันและการตอบสนองที่คาดหวังจากเซิร์ฟเวอร์ระยะไกล เพื่อให้สามารถเรียกใช้สคริปต์จะต้องมีการแสดงผลที่ปฏิบัติการได้ เพื่อที่จะทำให้สคริปต์คาดหวังโปรแกรมปฏิบัติการอิสระสามขั้นตอนจะต้องปฏิบัติตาม สถานที่ตั้งของความคาดหวังจะต้องรวมอยู่ในสคริปต์.

สมมติว่าตำแหน่งของ Expect ในระบบของคุณคือ / usr / bin / คาดหวัง ป้อนบรรทัดต่อไปนี้เป็นบรรทัดแรกในสคริปต์คาดหวังของคุณ:

#! / usr / bin / คาดหวัง -f

  • Shebang (#!) จำเป็นต้องมีเพื่อระบุ Expect เป็นโปรแกรมที่ใช้ในการแปลสคริปต์.
  • -f สวิทช์ที่ใช้ในการบอกคาดว่ามันจะอ่านคำสั่งจากไฟล์.

ต้องบันทึกสคริปต์เป็นไฟล์เชลล์ (.ดวลจุดโทษ) ในตัวอย่างนี้เราจะบันทึกเป็น expscript.sh.

ทำให้สคริปต์เรียกใช้งานได้.

สิ่งนี้ต้องการการเปลี่ยนแปลงการอนุญาตในไฟล์สคริปต์ทำให้สามารถเรียกใช้งานได้.

ป้อนข้อมูลต่อไปนี้ที่เทอร์มินัลเพื่อแก้ไขการอนุญาตบนไฟล์ทำให้สามารถเรียกใช้งานได้.

$ chmod 755 expscript.sh

สคริปต์

บรรทัดที่สองในสคริปต์ของคุณใช้ วางไข่ คำสั่งซึ่งเปิดตัวคำสั่งภายนอก ในตัวอย่างนี้เนื่องจากเรากำลังติดต่อกับ SSH SSH ใช้คำสั่งเพื่อเริ่มเซสชัน SSH ด้วยเซิร์ฟเวอร์ระยะไกล“remote.server.com”.

วางไข่ ssh remote.server.com

เมื่อพยายามเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลผ่าน SSH คุณจะได้รับแจ้งให้ใส่รหัสผ่าน ดังที่เราได้กล่าวไว้ก่อนหน้านี้สคริปต์คาดหวังประกอบด้วยบทสนทนาจากทั้งสองเครื่องดังนั้นคำตอบที่คาดหวังจะต้องรวมอยู่ในสคริปต์.

การตอบสนองที่คาดหวังจะต้องถูกห้ามโดย คาดหวัง คำสั่งและอยู่ในเครื่องหมายคำพูดคู่:

คาดหวัง "รหัสผ่าน: "

หมายเหตุ: เซิร์ฟเวอร์บางแห่งจะส่งคืน“ รหัสผ่าน” ด้วยตัวอักษร ‘P’ หากสคริปต์คาดว่าจะมี “p” ทั่วไปสิ่งนี้อาจทำให้สคริปต์ล้มเหลว อาจใช้สัญลักษณ์แทนได้ บรรทัดนี้จะถูกแก้ไขดังนี้:

คาดหวัง "* ssword: "

หรือมากกว่านั้นเพียงแค่:

คาดหวัง "*: "

วิธีการนี้อาจใช้สำหรับการตอบสนองที่คาดไว้จำนวนมากจากเครื่องระยะไกล จากนั้นคุณจะต้องป้อนรหัสผ่านของคุณ คำสั่งที่จะส่งจากคอมพิวเตอร์เฉพาะที่จะถูก จำกัด โดย ส่ง คำสั่งและเช่นเดียวกับการตอบสนองที่คาดไว้จะต้องอยู่ในเครื่องหมายคำพูดคู่ นอกจากนี้คำสั่งที่ส่งจะต้องมีการส่งคืนอย่างหนัก (\ r) ในตอนท้ายภายในเครื่องหมายคำพูดคู่.

สมมติว่ารหัสผ่านของ P @ $$ w0rd, บรรทัดถัดไปจะเป็น.

ส่ง "P @ $$ w0rd \ r

ณ จุดนี้คุณควรพบกับพรอมต์ของผู้ใช้เพื่อให้เป็นข้อมูลที่คาดหวัง:

คาดหวัง "$ "

ณ จุดนี้คุณสามารถเขียนรายการคำสั่งใด ๆ ที่คุณต้องการดำเนินการพร้อมกับคำตอบที่คาดไว้จากเซิร์ฟเวอร์ระยะไกล ในตอนท้ายของรายการคำสั่งอัตโนมัติของคุณคาดว่าจะมีข้อความแจ้งผู้ใช้และเรียกการออกเพื่อปิดเซสชัน.

คาดหวัง "$ "
ส่ง "ทางออก \ r"

สคริปต์ทั้งหมดควรเป็น:

#! / usr / bin / คาดหวัง -f
วางไข่ ssh remote.server.com
คาดหวัง "รหัสผ่าน: "
ส่ง "P @ $$ w0rd \ r"
คาดหวัง "$ "
…… ## คำสั่งอัตโนมัติต่างๆ ##
คาดหวัง "$ "
ส่ง "ทางออก \ r"

เมื่อไฟล์ถูกบันทึกแล้วอย่าลืมปฏิบัติตามคำแนะนำที่ให้ไว้ข้างต้นอีกครั้งเพื่อแก้ไขสิทธิ์เพื่อให้สามารถเรียกใช้งานได้.

หมายเหตุ: หากคุณมีปัญหากับสคริปต์ของคุณลองติดตามด้วยตัวคุณเองและเรียกใช้ด้วยตนเองจดบันทึกการตอบกลับของเซิร์ฟเวอร์เพื่อให้แน่ใจว่าคำตอบที่คุณคาดหวังไว้ในสคริปต์นั้นถูกต้องและคำสั่งที่ส่งนั้นไม่มีข้อผิดพลาด.

วิธีการสร้างสคริปต์คาดหวังได้อย่างง่ายดาย

วิธีที่ยอดเยี่ยมในการสร้างสคริปต์คาดหวังคือการใช้โปรแกรมตัวบันทึกเชลล์ที่รู้จักกันในชื่อ Autoexpect Autoexpect ทำงานโดยบันทึกเซสชันของเชลล์ การตอบสนองการกดแป้นและเชลล์แต่ละครั้งจะถูกบันทึกและเขียนลงในสคริปต์คาดหวัง, script.exp.

ด้วยลักษณะของคอมพิวเตอร์ที่มีการเปลี่ยนแปลงตลอดเวลาจึงไม่มีสองเซสชันเหมือนกันทั้งหมดดังนั้นการเรียกใช้สคริปต์ดิบที่สร้างจากเซสชันเดียวอาจไม่ทำงานอย่างที่คาดไว้เมื่อทำงานอีกครั้ง ดังนั้นสคริปต์ส่วนใหญ่ที่สร้างขึ้นโดย Autoexpect จะต้องได้รับการตรวจสอบแก้ไขและตัดแต่งเพื่อให้ได้ผลที่ต้องการ.

หากคุณใช้ Ubuntu ให้เรียกใช้สิ่งต่อไปนี้เพื่อติดตั้ง Autoexpect:

$ sudo apt-get install expect-dev

  • สิ่งนี้จะดาวน์โหลดยูทิลิตีและการอ้างอิงที่จำเป็นทั้งหมด.

หากคุณใช้ CentOS ให้เรียกใช้สิ่งต่อไปนี้เพื่อติดตั้ง Autoexpect:

# yum ติดตั้ง expect-devel

หากต้องการใช้ Autoexpect ให้ป้อนข้อมูลต่อไปนี้:

$ Autoexpect

เมื่อเปิดใช้งาน Autoexpect ข้อความต่อไปนี้จะปรากฏขึ้นในเครื่องของคุณ:

Autoexpect เริ่มต้นไฟล์คือ script.exp

การกดแป้นแต่ละครั้งที่คุณพิมพ์และการตอบสนองที่ตามมาใด ๆ ที่ปรากฏบนหน้าจอจะถูกบันทึกลงในไฟล์ script.exp และจัดรูปแบบในสคริปต์คาดหวัง.

หากต้องการหยุด Autoexpect และหยุดการบันทึกลงในไฟล์ script.exp ให้กด Ctrl-D.

ที่สร้างขึ้น script.exp ไฟล์จะยาวมากพร้อมด้วยการถอดเสียงทั้งหมดของเซสชันและคำอธิบายเพิ่มเติม ตามที่ระบุไว้ก่อนตรวจสอบและแก้ไขไฟล์ที่สร้างทดสอบสำหรับข้อบกพร่องใด ๆ ขณะนี้อาจใช้เวลาสักครู่เพื่อให้ถูกต้องมันง่ายกว่าโดยไกลกว่าการพยายามสร้างสคริปต์ที่ซับซ้อนด้วยมือ.

ตอนนี้คุณมีสคริปต์ที่ใช้งานได้อย่างสมบูรณ์เพื่อเรียกใช้ซ้ำ ๆ ได้ตามต้องการด้วยความง่ายและวิธีการในการสร้างสคริปต์ได้ง่ายขึ้น.

ลองใช้บริการเว็บโฮสติ้งที่ดีที่สุด 3 อันดับแรก

FastComet

ราคาเริ่มต้น:
$ 2.95


ความเชื่อถือได้
9.7


การตั้งราคา
9.5


เป็นมิตรกับผู้ใช้
9.7


สนับสนุน
9.7


คุณสมบัติ
9.6

อ่านความคิดเห็น

เยี่ยมชม FastComet

A2 โฮสติ้ง

ราคาเริ่มต้น:
$ 3.92


ความเชื่อถือได้
9.3


การตั้งราคา
9.0


เป็นมิตรกับผู้ใช้
9.3


สนับสนุน
9.3


คุณสมบัติ
9.3

อ่านความคิดเห็น

เยี่ยมชม A2 Hosting

ChemiCloud

ราคาเริ่มต้น:
$ 2.76


ความเชื่อถือได้
10


การตั้งราคา
9.9


เป็นมิตรกับผู้ใช้
9.9


สนับสนุน
10


คุณสมบัติ
9.9

อ่านความคิดเห็น

เยี่ยมชม ChemiCloud

บทความเชิงปฏิบัติที่เกี่ยวข้อง

  • วิธีการตั้งค่า SSH บน Ubuntu 16.04 VPS หรือเซิร์ฟเวอร์เฉพาะ
    สื่อกลาง
  • วิธีใช้และจัดการคีย์ SSH ด้วย cPanel
    สื่อกลาง
  • วิธีการตั้งค่า SSH สำหรับ Ubuntu 18.04 VPS หรือเซิร์ฟเวอร์เฉพาะ
    สื่อกลาง
  • วิธีการตั้งค่าเซิร์ฟเวอร์ Linux VPN จากไคลเอนต์ Windows
    สื่อกลาง
  • วิธีการเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้ SSH บน Linux และ Mac
    สื่อกลาง
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me