นี่คือคำสั่ง autoexpect ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้เวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
autoexpect - สร้างสคริปต์ Expect จากการดูเซสชัน
เรื่องย่อ
คาดหวังอัตโนมัติ [ args ] [ โครงการ อาร์กิว... ]
บทนำ
autoexpect เฝ้าดูคุณโต้ตอบกับโปรแกรมอื่นและสร้างสคริปต์ Expect ที่
ทำซ้ำการโต้ตอบของคุณ สำหรับสคริปต์เส้นตรง autoexpect ช่วยประหยัดเวลาได้มาก
มากกว่าการเขียนสคริปต์ด้วยมือ แม้ว่าคุณจะเป็นผู้เชี่ยวชาญที่คาดหวัง คุณจะพบมัน
สะดวกในการใช้ autoexpect เพื่อทำให้ส่วนโต้ตอบที่ไม่สนใจมากขึ้นโดยอัตโนมัติ มันคือ
ตัด/วางสคริปต์ autoexpect จำนวนมากได้ง่ายกว่าการเขียนจาก
เกา. และถ้าคุณเป็นมือใหม่ คุณอาจจะไม่ต้องเรียนรู้อะไรเลยก็ได้
เกี่ยวกับ Expect มากกว่าวิธีการเรียก autoexpect
วิธีที่ง่ายที่สุดในการใช้ autoexpect คือการเรียกจากบรรทัดคำสั่งโดยไม่มีอาร์กิวเมนต์
ตัวอย่างเช่น:
% คาดหวังอัตโนมัติ
ตามค่าเริ่มต้น autoexpect จะสร้างเชลล์ให้คุณ กำหนดชื่อโปรแกรมและอาร์กิวเมนต์
autoexpect วางไข่โปรแกรมนั้น ตัวอย่างเช่น:
% คาดหวังอัตโนมัติ ftp ftp.cme.nist.gov
เมื่อโปรแกรมที่เกิดของคุณทำงาน ให้โต้ตอบตามปกติ เมื่อคุณออกจากเปลือก
(หรือโปรแกรมที่คุณระบุ) autoexpect จะสร้างสคริปต์ใหม่ให้คุณ โดยค่าเริ่มต้น,
autoexpect เขียนสคริปต์ใหม่ไปที่ "script.exp" คุณสามารถแทนที่สิ่งนี้ด้วยแฟล็ก -f
ตามด้วยชื่อสคริปต์ใหม่
ตัวอย่างต่อไปนี้จะเรียกใช้ "ftp ftp.cme.nist.gov" และจัดเก็บสคริปต์ Expect . ที่เป็นผลลัพธ์
ในไฟล์ "nist"
% คาดหวังอัตโนมัติ -f nist ftp ftp.cme.nist.gov
สิ่งสำคัญคือต้องเข้าใจว่า autoexpect ไม่รับประกันสคริปต์ที่ใช้งานได้เพราะ
จำเป็นต้องเดาเกี่ยวกับบางสิ่ง และบางครั้งก็เดาผิด
อย่างไรก็ตาม การระบุและแก้ไขปัญหาเหล่านี้มักทำได้ง่ายมาก ปัญหาทั่วไป
คือ:
· เวลา. โปรแกรมจำนวนมากอย่างน่าประหลาดใจ (rn, ksh, zsh, telnet เป็นต้น)
และอุปกรณ์ (เช่น โมเด็ม) ละเว้นการกดแป้นพิมพ์ที่มาถึง "เร็วเกินไป" หลังจาก
พร้อมท์ หากคุณพบว่าสคริปต์ใหม่ของคุณค้างอยู่ที่จุดใดจุดหนึ่ง ให้ลองเพิ่ม a
นอนหลับสั้นก่อนส่งครั้งก่อน
คุณสามารถบังคับพฤติกรรมนี้โดยแทนที่ตัวแปร
"force_conservative" ใกล้กับจุดเริ่มต้นของสคริปต์ที่สร้างขึ้น นี้
โหมด "อนุรักษ์นิยม" ทำให้ autoexpect หยุดโดยอัตโนมัติชั่วครู่หนึ่ง (หนึ่งในสิบของ
วินาที) ก่อนส่งตัวละครแต่ละตัว สิ่งนี้ทำให้ทุกโปรแกรมที่ฉันรู้จักสงบลง
ของ.
โหมดอนุรักษ์นิยมนี้มีประโยชน์หากคุณต้องการสร้างความมั่นใจอย่างรวดเร็ว
ว่าปัญหาคือเรื่องจังหวะเวลา (หรือถ้าไม่สนใจจริงๆ ว่าจะเร็วแค่ไหน
สคริปต์ทำงาน) โหมดเดียวกันนี้สามารถบังคับได้ก่อนที่จะสร้างสคริปต์โดย
โดยใช้แฟล็ก -c
โชคดีที่จุดเวลาเหล่านี้หายาก ตัวอย่างเช่น telnet ละเว้น
อักขระหลังจากป้อนลำดับการหลบหนีเท่านั้น โมเด็มเท่านั้นละเว้น
ตัวละครทันทีหลังจากเชื่อมต่อกับพวกเขาเป็นครั้งแรก จำนวนน้อย
โปรแกรมแสดงพฤติกรรมนี้ตลอดเวลา แต่โดยทั่วไปแล้วจะมีการสลับไปที่
ปิดการใช้งาน ตัวอย่างเช่น แฟล็ก -T ของ rn ปิดใช้งานลักษณะการทำงานนี้
ตัวอย่างต่อไปนี้เริ่มต้น autoexpect ในโหมดอนุรักษ์นิยม
คาดหวังอัตโนมัติ -c
แฟล็ก -C กำหนดคีย์เพื่อสลับโหมดอนุรักษ์นิยม ตัวอย่างต่อไปนี้
เริ่ม autoexpect (ในโหมดไม่อนุรักษ์นิยม) โดยมี ^L เป็นปุ่มสลับ (โปรดทราบว่า
^L ถูกป้อนตามตัวอักษร - เช่น ป้อนการควบคุมจริง-L)
คาดหวังอัตโนมัติ -C ^L
ตัวอย่างต่อไปนี้เริ่มต้น autoexpect ในโหมดอนุรักษ์นิยมด้วย ^L เป็น
ข้อศอก
คาดหวังอัตโนมัติ -c -C ^L
· เสียงสะท้อน อักขระสะท้อนหลายโปรแกรม ตัวอย่างเช่น หากคุณพิมพ์ "เพิ่มเติม" ลงใน a
เชลล์ สิ่งที่ autoexpect เห็นจริงคือ:
คุณพิมพ์ 'm'
คอมพิวเตอร์พิมพ์ 'm'
คุณพิมพ์ 'o'
คอมพิวเตอร์พิมพ์ 'o'
คุณพิมพ์ 'r'
คอมพิวเตอร์พิมพ์ 'r'
...
ถ้าไม่มีความรู้เฉพาะของโปรแกรม เป็นไปไม่ได้ที่จะรู้ว่าคุณคือ
รอให้ตัวละครแต่ละตัวสะท้อนออกมาก่อนจะพิมพ์ต่อไป หากคาดหวังอัตโนมัติ
เห็นตัวอักษรถูกสะท้อน ถือว่าส่งได้หมดทั้งกลุ่ม
แทนที่จะสอดแทรกพวกเขาในลักษณะที่ปรากฏ สิ่งนี้ทำให้
สคริปต์น่าอ่านยิ่งขึ้น อย่างไรก็ตาม มันอาจจะไม่ถูกต้องหาก
คุณต้องรอดูตัวละครแต่ละตัวสะท้อนออกมาจริงๆ
· เปลี่ยน. Autoexpect บันทึกทุกตัวอักษรจากการโต้ตอบในสคริปต์
นี้เป็นสิ่งที่พึงปรารถนาเพราะมันทำให้คุณสามารถตัดสินใจเกี่ยวกับ
สิ่งที่สำคัญและสิ่งที่สามารถแทนที่ด้วยการจับคู่รูปแบบ
ในทางกลับกัน ถ้าคุณใช้คำสั่งที่มีเอาต์พุตแตกต่างจากรันถึงรัน
สคริปต์ที่สร้างขึ้นจะไม่ถูกต้อง ตัวอย่างเช่น "วันที่"
คำสั่งสร้างผลลัพธ์ที่แตกต่างกันเสมอ ดังนั้นใช้คำสั่ง date while
การรัน autoexpect เป็นวิธีที่แน่นอนในการผลิตสคริปต์ที่จะต้องแก้ไข
เพื่อให้มันทำงานได้
แฟล็ก -p กำหนดให้ autoexpect เป็น "โหมดพร้อมท์" ในโหมดนี้ autoexpect จะ
มองหาเฉพาะบรรทัดสุดท้ายของเอาต์พุตโปรแกรม - ซึ่งมักจะเป็น
พร้อมท์ สิ่งนี้จะจัดการกับปัญหาวันที่ (ดูด้านบน) และอื่นๆ ส่วนใหญ่
ตัวอย่างต่อไปนี้เริ่มต้น autoexpect ในโหมดพร้อมท์
คาดหวังอัตโนมัติ -p
แฟล็ก -P กำหนดคีย์เพื่อสลับโหมดพร้อมต์ ตัวอย่างต่อไปนี้เริ่มต้น
autoexpect (ในโหมดไม่พร้อมท์) โดยมี ^P เป็นปุ่มสลับ โปรดทราบว่า ^P คือ
ป้อนตามตัวอักษร - เช่นป้อนการควบคุมจริง -P
คาดหวังอัตโนมัติ -P ^P
ตัวอย่างต่อไปนี้เริ่มต้น autoexpect ในโหมดพร้อมท์โดยมี ^P เป็นปุ่มสลับ
อัตโนมัติ -p -P ^P
อื่น ๆ ธง
พื้นที่ -เงียบ ตั้งค่าสถานะปิดใช้งานข้อความแสดงข้อมูลที่ผลิตโดย autoexpect
พื้นที่ -Q แฟล็กตั้งชื่ออักขระเครื่องหมายคำพูดซึ่งสามารถใช้เพื่อป้อนอักขระที่คาดหวังโดยอัตโนมัติ
มิฉะนั้นจะบริโภคเพราะใช้เป็นตัวสลับ
ตัวอย่างต่อไปนี้แสดงจำนวนแฟล็กพร้อมเครื่องหมายคำพูดที่ใช้ระบุวิธีการป้อน
สลับอย่างแท้จริง
คาดหวังอัตโนมัติ -P ^P -C ^L -Q ^Q
สไตล์
ฉันไม่รู้ว่ามี "สไตล์" สำหรับโปรแกรม Expect หรือไม่ แต่ autoexpect ควรจะเป็นอย่างแน่นอน
ไม่ถือเป็นแบบอย่างใดๆ ตัวอย่างเช่น autoexpect ใช้คุณสมบัติของ Expect
ที่มีไว้สำหรับการเขียนสคริปต์ที่สร้างด้วยคอมพิวเตอร์โดยเฉพาะ ดังนั้นอย่าพยายาม
เขียนสคริปต์ที่ดูเหมือนสร้างขึ้นโดย autoexpect อย่างซื่อสัตย์ มันไม่ใช่
มีประโยชน์
ในทางกลับกัน สคริปต์ autoexpect จะแสดงบางสิ่งที่คุ้มค่า ตัวอย่างเช่น คุณ
สามารถดูว่าต้องยกสตริงใด ๆ เพื่อใช้ในสคริปต์ Tcl เพียงแค่เรียกใช้
สตริงผ่าน autoexpect
ใช้ autoexpect ออนไลน์โดยใช้บริการ onworks.net