ນີ້ແມ່ນຄໍາສັ່ງ autoexpect ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍສະຖານີເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
autoexpect - ສ້າງສະຄຣິບ Expect ຈາກການເບິ່ງເຊດຊັນ
ສະຫຼຸບສັງລວມ
ຄາດຫວັງອັດຕະໂນມັດ [ ໂຕ້ຖຽງ ] [ ໂຄງການ ໂຕ້ຖຽງ... ]
ພາກສະເຫນີ
autoexpect ເບິ່ງທ່ານພົວພັນກັບໂຄງການອື່ນແລະສ້າງສະຄິບ Expect ທີ່
reproduces ປະຕິສໍາພັນຂອງທ່ານ. ສໍາລັບສະຄຣິບເສັ້ນກົງ, autoexpect ຊ່ວຍປະຢັດເວລາຢ່າງຫຼວງຫຼາຍ
ຫຼາຍກວ່າການຂຽນສະຄິບດ້ວຍມື. ເຖິງແມ່ນວ່າທ່ານເປັນຜູ້ຊ່ຽວຊານ Expect, ທ່ານຈະພົບເຫັນມັນ
ສະດວກໃນການໃຊ້ autoexpect ເພື່ອເຮັດໃຫ້ສ່ວນທີ່ບໍ່ມີຈິດໃຈຫຼາຍຂຶ້ນຂອງການໂຕ້ຕອບອັດຕະໂນມັດ. ມັນແມ່ນ
ຫຼາຍງ່າຍກວ່າທີ່ຈະຕັດ / ວາງ hunks ຂອງ autoexpect scripts ຮ່ວມກັນກ່ວາທີ່ຈະຂຽນໃຫ້ເຂົາເຈົ້າ
ຮອຍຂີດຂ່ວນ. ແລະຖ້າຫາກວ່າທ່ານເປັນຜູ້ເລີ່ມຕົ້ນ, ທ່ານອາດຈະສາມາດຫນີໄປໂດຍການຮຽນຮູ້ບໍ່ມີຫຍັງ
ເພີ່ມເຕີມກ່ຽວກັບ Expect ຫຼາຍກວ່າວິທີການໂທຫາ autoexpect.
ວິທີທີ່ງ່າຍທີ່ສຸດທີ່ຈະໃຊ້ autoexpect ແມ່ນການໂທຫາມັນຈາກເສັ້ນຄໍາສັ່ງໂດຍບໍ່ມີການໂຕ້ຖຽງ.
ຍົກຕົວຢ່າງ:
% ຄາດຫວັງອັດຕະໂນມັດ
ໂດຍຄ່າເລີ່ມຕົ້ນ, autoexpect ວາງໄຂ່ໃຫ້ກັບເຈົ້າ. ໂດຍໃຫ້ຊື່ໂຄງການແລະການໂຕ້ຖຽງ,
autoexpect spawns ໂຄງການນັ້ນ. ຍົກຕົວຢ່າງ:
% autoexpect ftp ftp.cme.nist.gov
ເມື່ອໂປຣແກມທີ່ສ້າງແລ້ວຂອງເຈົ້າກຳລັງເຮັດວຽກຢູ່, ໃຫ້ໂຕ້ຕອບກັບປົກກະຕິ. ໃນເວລາທີ່ທ່ານໄດ້ອອກຈາກແກະ
(ຫຼືໂຄງການທີ່ທ່ານລະບຸ), autoexpect ຈະສ້າງສະຄິບໃຫມ່ສໍາລັບທ່ານ. ໂດຍຄ່າເລີ່ມຕົ້ນ,
autoexpect ຂຽນສະຄຣິບໃໝ່ໃສ່ "script.exp". ທ່ານສາມາດ override ນີ້ດ້ວຍທຸງ -f
ຕິດຕາມດ້ວຍຊື່ສະຄຣິບໃໝ່.
ຕົວຢ່າງຕໍ່ໄປນີ້ແລ່ນ "ftp ftp.cme.nist.gov" ແລະເກັບຮັກສາສະຄິບທີ່ຄາດຫວັງ.
ໃນໄຟລ໌ "nist".
% autoexpect -f nist ftp ftp.cme.nist.gov
ມັນເປັນສິ່ງສໍາຄັນທີ່ຈະເຂົ້າໃຈວ່າ autoexpect ບໍ່ໄດ້ຮັບປະກັນ script ທີ່ເຮັດວຽກເພາະວ່າ
ມັນ ຈຳ ເປັນຕ້ອງເດົາກ່ຽວກັບສິ່ງທີ່ແນ່ນອນ - ແລະບາງຄັ້ງມັນເດົາຜິດ.
ຢ່າງໃດກໍຕາມ, ປົກກະຕິແລ້ວມັນງ່າຍທີ່ຈະກໍານົດແລະແກ້ໄຂບັນຫາເຫຼົ່ານີ້. ບັນຫາປົກກະຕິ
ແມ່ນ:
· ກຳນົດເວລາ. ຈໍານວນໂຄງການຈໍານວນຫຼາຍທີ່ຫນ້າປະຫລາດໃຈ (rn, ksh, zsh, telnet, ແລະອື່ນໆ)
ແລະອຸປະກອນ (ເຊັ່ນ: ໂມເດັມ) ບໍ່ສົນໃຈການກົດແປ້ນພິມທີ່ມາຮອດ "ໄວເກີນໄປ" ຫຼັງຈາກ
ເຕືອນ. ຖ້າເຈົ້າພົບສະຄຣິບໃໝ່ຂອງເຈົ້າຄ້າງຢູ່ບ່ອນດຽວ, ໃຫ້ລອງເພີ່ມ a
ນອນສັ້ນກ່ອນການສົ່ງທີ່ຜ່ານມາ.
ທ່ານສາມາດບັງຄັບພຶດຕິກໍານີ້ຕະຫຼອດໂດຍການ overriding ຕົວແປ
"force_conservative" ຢູ່ໃກ້ກັບຈຸດເລີ່ມຕົ້ນຂອງສະຄຣິບທີ່ສ້າງຂຶ້ນ. ນີ້
ໂໝດ "ອະນຸລັກ" ເຮັດໃຫ້ autoexpect ຢຸດຊົ່ວຄາວໂດຍອັດຕະໂນມັດ (ໜຶ່ງສ່ວນສິບຂອງ
ວິນາທີ) ກ່ອນທີ່ຈະສົ່ງແຕ່ລະຕົວອັກສອນ. ນີ້ເຮັດໃຫ້ທຸກໂຄງການທີ່ຂ້ອຍຮູ້
ຂອງ.
ຮູບແບບການອະນຸລັກນີ້ແມ່ນເປັນປະໂຫຍດຖ້າຫາກວ່າທ່ານພຽງແຕ່ຕ້ອງການທີ່ຈະຫມັ້ນໃຈຕົນເອງຢ່າງໄວວາ
ວ່າບັນຫາແມ່ນກໍານົດເວລາ (ຫຼືຖ້າທ່ານກໍ່ບໍ່ສົນໃຈວ່າໄວເທົ່າໃດ
script ແລ່ນ). ຮູບແບບດຽວກັນນີ້ສາມາດຖືກບັງຄັບກ່ອນທີ່ຈະສ້າງສະຄິບໂດຍ
ການນໍາໃຊ້ທຸງ -c.
ໂຊກດີ, ຈຸດເວລາເຫຼົ່ານີ້ແມ່ນຫາຍາກ. ຕົວຢ່າງ, telnet ບໍ່ສົນໃຈ
ຕົວອັກສອນພຽງແຕ່ຫຼັງຈາກເຂົ້າໄປໃນລໍາດັບການຫລົບຫນີຂອງມັນ. ໂມເດັມພຽງແຕ່ບໍ່ສົນໃຈ
ລັກສະນະທັນທີຫຼັງຈາກເຊື່ອມຕໍ່ກັບພວກເຂົາຄັ້ງທໍາອິດ. ບໍ່ພໍເທົ່າໃດ
ໂປລແກລມສະແດງພຶດຕິກໍານີ້ຕະຫຼອດເວລາແຕ່ປົກກະຕິແລ້ວມີການປ່ຽນໄປ
ປິດການໃຊ້ງານມັນ. ຕົວຢ່າງ, ທຸງ rn's -T ປິດການເຮັດວຽກນີ້.
ຕົວຢ່າງຕໍ່ໄປນີ້ເລີ່ມຕົ້ນ autoexpect ໃນຮູບແບບອະນຸລັກ.
autoexpect -c
ທຸງ -C ກໍານົດກະແຈເພື່ອສະຫຼັບໂໝດອະນຸລັກ. ຕົວຢ່າງຕໍ່ໄປນີ້
ເລີ່ມການຄາດຫວັງອັດຕະໂນມັດ (ໃນໂໝດບໍ່ອະນຸລັກ) ດ້ວຍ ^L ເປັນຕົວປິດ. (ໃຫ້ສັງເກດວ່າ
the ^L ແມ່ນໃສ່ການຮູ້ຫນັງສື - ເຊັ່ນ, ເຂົ້າການຄວບຄຸມທີ່ແທ້ຈິງ -L).
autoexpect -C ^L
ຕົວຢ່າງຕໍ່ໄປນີ້ເລີ່ມຕົ້ນ autoexpect ໃນຮູບແບບອະນຸລັກທີ່ມີ ^L ເປັນ
ສະຫຼັບ.
autoexpect -c -C ^L
· ສຽງດັງ. ລັກສະນະສຽງຂອງໂປຣແກຣມຫຼາຍອັນ. ຕົວຢ່າງ: ຖ້າເຈົ້າພິມ "more" ໃສ່ a
shell, ສິ່ງທີ່ autoexpect ເຫັນຕົວຈິງແມ່ນ:
ເຈົ້າພິມ 'm',
ຄອມພິວເຕີພິມ 'm',
ເຈົ້າພິມ 'o',
ຄອມພິວເຕີພິມ 'o',
ທ່ານພິມ 'r',
ຄອມພິວເຕີພິມ 'r',
...
ໂດຍບໍ່ມີຄວາມຮູ້ສະເພາະກ່ຽວກັບໂຄງການ, ມັນເປັນໄປບໍ່ໄດ້ທີ່ຈະຮູ້ວ່າທ່ານຢູ່
ລໍຖ້າເບິ່ງແຕ່ລະຕົວອັກສອນທີ່ສະທ້ອນອອກມາກ່ອນທີ່ຈະພິມຕົວຕໍ່ໄປ. ຖ້າຄາດຫວັງອັດຕະໂນມັດ
ເຫັນຕົວອັກສອນຖືກສະທ້ອນ, ມັນສົມມຸດວ່າມັນສາມາດສົ່ງພວກເຂົາທັງຫມົດເປັນກຸ່ມ
ແທນທີ່ຈະແຊກແຊງໃຫ້ເຂົາເຈົ້າໃນວິທີການທີ່ເຂົາເຈົ້າຕົ້ນສະບັບໄດ້ປະກົດຕົວ. ນີ້ເຮັດໃຫ້
script ມ່ວນກວ່າທີ່ຈະອ່ານ. ຢ່າງໃດກໍຕາມ, ມັນອາດຈະບໍ່ຖືກຕ້ອງຖ້າຫາກວ່າ
ເຈົ້າຕ້ອງລໍຖ້າເບິ່ງຕົວລະຄອນແຕ່ລະຄົນທີ່ສະທ້ອນອອກມາ.
· ການປ່ຽນແປງ. Autoexpect ບັນທຶກທຸກຕົວລະຄອນຈາກການໂຕ້ຕອບໃນສະຄຣິບ.
ນີ້ແມ່ນຄວາມປາຖະຫນາເພາະວ່າມັນເຮັດໃຫ້ທ່ານມີຄວາມສາມາດທີ່ຈະຕັດສິນກ່ຽວກັບ
ສິ່ງທີ່ສໍາຄັນແລະສິ່ງທີ່ສາມາດຖືກແທນທີ່ດ້ວຍການຈັບຄູ່ຮູບແບບ.
ໃນທາງກົງກັນຂ້າມ, ຖ້າທ່ານໃຊ້ຄໍາສັ່ງທີ່ຜົນຜະລິດແຕກຕ່າງຈາກການແລ່ນໄປຫາແລ່ນ,
ສະຄຣິບທີ່ສ້າງຂຶ້ນຈະບໍ່ຖືກຕ້ອງ. ຕົວຢ່າງ, "ວັນທີ"
ຄໍາສັ່ງສະເຫມີຜະລິດຜົນຜະລິດທີ່ແຕກຕ່າງກັນ. ດັ່ງນັ້ນການນໍາໃຊ້ຄໍາສັ່ງວັນທີໃນຂະນະທີ່
ແລ່ນ autoexpect ເປັນວິທີທີ່ແນ່ນອນທີ່ຈະຜະລິດສະຄິບທີ່ຈະຮຽກຮ້ອງໃຫ້ມີການແກ້ໄຂ
ເພື່ອໃຫ້ມັນເຮັດວຽກ.
ທຸງ -p ວາງ autoexpect ເຂົ້າໄປໃນ "ໂຫມດ prompt". ໃນຮູບແບບນີ້, autoexpect ຈະ
ພຽງແຕ່ຊອກຫາເສັ້ນສຸດທ້າຍຂອງຜົນໄດ້ຮັບຂອງໂຄງການ - ເຊິ່ງປົກກະຕິແລ້ວແມ່ນ
ດ່ວນ. ນີ້ຈັດການກັບບັນຫາວັນທີ (ເບິ່ງຂ້າງເທິງ) ແລະອື່ນໆສ່ວນໃຫຍ່.
ຕົວຢ່າງຕໍ່ໄປນີ້ເລີ່ມຕົ້ນ autoexpect ໃນໂຫມດ prompt.
autoexpect -p
ທຸງ -P ກຳນົດປຸ່ມເພື່ອສະຫຼັບໂໝດການເຕືອນ. ຕົວຢ່າງຕໍ່ໄປນີ້ເລີ່ມຕົ້ນ
autoexpect (ໃນໂໝດບໍ່ກະຕຸ້ນເຕືອນ) ໂດຍມີ ^P ເປັນປຸ່ມສະຫຼັບ. ໃຫ້ສັງເກດວ່າ ^P ແມ່ນ
enter literally - ie, enter a real control-P.
autoexpect -P ^P
ຕົວຢ່າງຕໍ່ໄປນີ້ເລີ່ມຕົ້ນ autoexpect ໃນໂໝດ prompt ດ້ວຍ ^P ເປັນຕົວປິດ.
autoexpect -p -P ^P
ອື່ນໆ ດອກໄມ້
ໄດ້ - ງຽບ ທຸງປິດໃຊ້ງານຂໍ້ຄວາມທີ່ຜະລິດໂດຍ autoexpect.
ໄດ້ -Q ທຸງຕັ້ງຊື່ຕົວອັກສອນອ້າງອີງທີ່ສາມາດໃຊ້ເພື່ອໃສ່ຕົວອັກສອນທີ່ຄາດຫວັງໂດຍອັດຕະໂນມັດ
ຖ້າ ບໍ່ ດັ່ງ ນັ້ນ ຈະ ບໍ ລິ ໂພກ ເພາະ ວ່າ ພວກ ເຂົາ ເຈົ້າ ໄດ້ ຖືກ ນໍາ ໃຊ້ ເປັນ ສະ ລັບ.
ຕົວຢ່າງຕໍ່ໄປນີ້ສະແດງໃຫ້ເຫັນຈໍານວນທຸງທີ່ມີຄໍາເວົ້າທີ່ໃຊ້ເພື່ອສະຫນອງວິທີການເຂົ້າ
ສະຫຼັບທີ່ຮູ້ຫນັງສື.
autoexpect -P ^P -C ^L -Q ^Q
STYLE
ຂ້ອຍບໍ່ຮູ້ວ່າມີ "ຮູບແບບ" ສໍາລັບໂຄງການຄາດຫວັງແຕ່ autoexpect ຄວນແນ່ນອນ
ບໍ່ໄດ້ຮັບການຈັດຂຶ້ນເປັນຮູບແບບຂອງຮູບແບບໃດຫນຶ່ງ. ຕົວຢ່າງ, autoexpect ໃຊ້ຄຸນສົມບັດຂອງ Expect
ທີ່ມີຈຸດປະສົງໂດຍສະເພາະສໍາລັບການສ້າງ scripting ຄອມພິວເຕີ. ສະນັ້ນຢ່າພະຍາຍາມ
ຂຽນສະຄຣິບຢ່າງຊື່ສັດທີ່ເບິ່ງຄືວ່າພວກມັນຖືກສ້າງຂື້ນໂດຍ autoexpect. ນີ້ບໍ່ແມ່ນ
ເປັນປະໂຫຍດ.
ໃນທາງກົງກັນຂ້າມ, script autoexpect ສະແດງໃຫ້ເຫັນບາງສິ່ງທີ່ມີຄ່າ. ຕົວຢ່າງ, ເຈົ້າ
ສາມາດເບິ່ງວ່າສະຕຣິງໃດຕ້ອງຖືກອ້າງອີງເພື່ອໃຊ້ມັນຢູ່ໃນສະຄິບ Tcl ງ່າຍໆໂດຍການແລ່ນ
ຊ່ອຍແນ່ຜ່ານ autoexpect.
ໃຊ້ autoexpect ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net