این دستور autoexpect است که می تواند در ارائه دهنده میزبانی رایگان OnWorks با استفاده از یکی از چندین ایستگاه کاری آنلاین رایگان مانند Ubuntu Online، Fedora Online، شبیه ساز آنلاین ویندوز یا شبیه ساز آنلاین MAC OS اجرا شود.
برنامه:
نام
autoexpect - از تماشای یک جلسه یک اسکریپ Expect ایجاد کنید
خلاصه
انتظار خودکار [ قوس ] [ برنامه ارگ... ]
معرفی
autoexpect شما را در حال تعامل با یک برنامه دیگر تماشا می کند و یک اسکریپ Expect ایجاد می کند
تعاملات شما را بازتولید می کند. برای اسکریپت های مستقیم، autoexpect در زمان قابل توجهی صرفه جویی می کند
بیش از نوشتن فیلمنامه با دست. حتی اگر شما یک متخصص Expect باشید، آن را پیدا خواهید کرد
استفاده از autoexpect برای خودکار کردن بخشهای بیاهمیتتر تعاملات راحت است. این است
برش/چسباندن بخشهایی از اسکریپتهای انتظار خودکار در کنار هم بسیار آسانتر از نوشتن آنها است
خراش و اگر مبتدی هستید، ممکن است بتوانید با هیچ چیز از یادگیری دور شوید
بیشتر در مورد Expect تا نحوه تماس با autoexpect.
ساده ترین راه برای استفاده از autoexpect فراخوانی آن از خط فرمان بدون هیچ آرگومان است.
مثلا:
% انتظار خودکار
به طور پیش فرض، autoexpect یک پوسته برای شما ایجاد می کند. با توجه به نام برنامه و آرگومان ها،
autoexpect آن برنامه را ایجاد می کند. مثلا:
% autoexpect ftp ftp.cme.nist.gov
هنگامی که برنامه تخم ریزی شده شما در حال اجرا است، به طور معمول تعامل داشته باشید. وقتی از پوسته خارج شدید
(یا برنامه ای که شما مشخص کرده اید)، autoexpect یک اسکریپت جدید برای شما ایجاد می کند. به صورت پیش فرض،
autoexpect اسکریپت جدید را به "script.exp" می نویسد. شما می توانید این را با پرچم -f لغو کنید
به دنبال آن یک نام اسکریپت جدید.
مثال زیر "ftp ftp.cme.nist.gov" را اجرا می کند و اسکریپت Expect حاصل را ذخیره می کند.
در فایل "nist".
% autoexpect -f nist ftp ftp.cme.nist.gov
درک این نکته مهم است که autoexpect یک اسکریپت کار را تضمین نمی کند زیرا
لزوماً باید در مورد چیزهای خاصی حدس بزند - و گاهی اوقات اشتباه حدس می زند.
با این حال، شناسایی و رفع این مشکلات معمولاً بسیار آسان است. مشکلات معمولی
هستند:
· زمان سنجی. تعداد شگفت انگیزی از برنامه ها (rn، ksh، zsh، telnet و غیره)
و دستگاهها (مثلاً مودمها) کلیدهایی را که «خیلی سریع» بعد از آن میرسند نادیده میگیرند
باعث می شود. اگر متوجه شدید که اسکریپت جدید شما در یک نقطه آویزان است، یک علامت را اضافه کنید
خواب کوتاه درست قبل از ارسال قبلی
شما می توانید با نادیده گرفتن متغیر، این رفتار را در سراسر آن مجبور کنید
"force_conservative" نزدیک به ابتدای اسکریپت تولید شده. این
حالت "محافظه کارانه" باعث می شود که انتظار خودکار به طور خودکار برای مدت کوتاهی مکث کند (یک دهم از
یک دوم) قبل از ارسال هر کاراکتر. این هر برنامه ای را که می شناسم آرام می کند
از.
این حالت محافظه کارانه مفید است اگر فقط می خواهید به سرعت به خودتان اطمینان دهید
که مشکل یک زمان بندی است (یا اگر واقعاً به سرعت اهمیتی نمی دهید
اسکریپت اجرا می شود). این حالت مشابه را می توان قبل از تولید اسکریپت توسط
با استفاده از پرچم -c
خوشبختانه، این نقاط زمانی نادر هستند. به عنوان مثال، telnet نادیده می گیرد
کاراکترها فقط پس از ورود به دنباله فرار آن. مودم ها فقط نادیده می گیرند
کاراکترها بلافاصله پس از اتصال به آنها برای اولین بار. تعداد کمی
برنامه ها همیشه این رفتار را نشان می دهند، اما معمولاً یک سوئیچ دارند
آن را غیرفعال کنید به عنوان مثال، پرچم -T rn این رفتار را غیرفعال می کند.
مثال زیر انتظار خودکار را در حالت محافظه کارانه شروع می کند.
انتظار خودکار -c
پرچم -C کلیدی برای تغییر حالت محافظه کارانه تعریف می کند. مثال زیر
انتظار خودکار (در حالت غیر محافظه کار) را با ^L به عنوان کلید شروع می کند. (توجه داشته باشید که
^L به معنای واقعی کلمه وارد می شود - یعنی یک کنترل-L واقعی را وارد کنید.
انتظار خودکار -C ^L
مثال زیر انتظار خودکار را در حالت محافظه کارانه با ^L شروع می کند
تغییر وضعیت.
autoexpect -c -C ^L
· طنین انداز. بسیاری از کاراکترهای برنامه اکو. برای مثال، اگر «بیشتر» را به a تایپ کنید
پوسته، آنچه autoexpect در واقع می بیند این است:
شما "m" را تایپ کردید،
کامپیوتر تایپ "m"،
"o" را تایپ کردی،
کامپیوتر تایپ "o"،
شما "r" را تایپ کردید،
کامپیوتر تایپ "r"،
...
بدون دانش خاصی از برنامه، غیرممکن است که بدانیم آیا هستید یا خیر
انتظار برای دیدن بازتاب هر کاراکتر قبل از تایپ بعدی. در صورت انتظار خودکار
کاراکترها را می بیند که بازتاب می شوند، فرض می کند که می تواند همه آنها را به عنوان یک گروه ارسال کند
به جای اینکه آنها را به همان شکلی که در ابتدا ظاهر شده اند در هم آمیزد. این باعث می شود
خواندن متن دلپذیرتر است با این حال، ممکن است نادرست باشد اگر
شما واقعاً باید منتظر می ماندید تا هر یک از شخصیت ها تکرار شوند.
· تغییر دادن. Autoexpect هر شخصیت را از تعامل در اسکریپت ضبط می کند.
این امر مطلوب است زیرا به شما توانایی قضاوت در مورد آن را می دهد
چه چیزی مهم است و چه چیزی را می توان با یک تطابق الگو جایگزین کرد.
از سوی دیگر، اگر از دستوراتی استفاده میکنید که خروجی آنها از اجرا به اجرا متفاوت است،
اسکریپت های تولید شده درست نمی شوند. به عنوان مثال، "تاریخ"
دستور همیشه خروجی متفاوتی تولید می کند. بنابراین با استفاده از دستور date while
اجرای autoexpect راهی مطمئن برای تولید اسکریپتی است که نیاز به ویرایش دارد
برای اینکه کار کند
پرچم -p، autoexpect را در حالت prompt قرار می دهد. در این حالت، autoexpect خواهد شد
فقط به دنبال آخرین خط خروجی برنامه باشید - که معمولاً این است
سریع. این مشکل تاریخ (به بالا را ببینید) و بسیاری دیگر را حل می کند.
مثال زیر انتظار خودکار را در حالت prompt شروع می کند.
انتظار خودکار -p
پرچم -P یک کلید برای تغییر حالت prompt تعریف می کند. مثال زیر شروع می شود
انتظار خودکار (در حالت غیر اعلان) با ^P به عنوان کلید. توجه داشته باشید که ^P است
وارد شده به معنای واقعی کلمه - یعنی یک کنترل واقعی P را وارد کنید.
انتظار خودکار -P ^P
مثال زیر انتظار خودکار را در حالت prompt با ^P به عنوان کلید شروع میکند.
autoexpect -p -P ^P
OTHER شلاق ها
La -ساکت flag پیام های اطلاعاتی تولید شده توسط autoexpect را غیرفعال می کند.
La -Q flag یک کاراکتر نقل قول را نام میبرد که میتوان از آن برای وارد کردن کاراکترهایی استفاده کرد که انتظار خودکار دارند
در غیر این صورت مصرف می شود زیرا آنها به عنوان ضامن استفاده می شوند.
مثال زیر تعدادی از پرچمها را نشان میدهد که برای ارائه راهی برای ورود استفاده میشوند
ضامن ها به معنای واقعی کلمه
autoexpect -P ^P -C ^L -Q ^Q
STYLE
نمیدانم «سبکی» برای برنامههای Expect وجود دارد یا خیر، اما autoexpect قطعا باید
به عنوان هر مدل از سبک نگه داشته شود. به عنوان مثال، autoexpect از ویژگی های Expect استفاده می کند
که به طور خاص برای برنامه نویسی کامپیوتری در نظر گرفته شده اند. پس سعی نکن
به طور صادقانه اسکریپت هایی بنویسید که به نظر می رسد توسط autoexpect تولید شده اند. این نیست
مفید است
از سوی دیگر، اسکریپت های انتظار خودکار چیزهای ارزشمندی را نشان می دهند. مثلا شما
می توانید ببینید که چگونه هر رشته ای باید نقل قول شود تا بتوان از آن در یک اسکریپت Tcl به سادگی با اجرا استفاده کرد
رشته ها از طریق autoexpect.
با استفاده از خدمات onworks.net از autoexpect آنلاین استفاده کنید