چگونه ورود AnyConnect را در Linux و macOS اسکریپت کنیم
فایل دودویی vpn پاسخها را به ترتیب اعلانها از ورودی استاندارد میخواند. دنباله را بسازید، یک بار آن را نقلقول کنید، از فهرست فرایندها دور نگه دارید و نخست یک منبع را بیازمایید.
اسکریپت با صفر خارج میشود، تونل پدیدار میشود و اجرای بعدی پیش از آنکه حتی رمز عبور بخواهد رد میشود۔ یا همان فرمان در ترمینال کار میکند و از یک کار زمانبندیشده با خطای «رویداد یافت نشد» شکست میخورد که هیچ چیز سودمندی را نام نمیبرد۔ هر دو گفتوگوی ورودی استاندارد کارخواه AnyConnect است که خراب شده، نه نقص شبکه۔ ورود را پرسش و پاسخی نوشتهشده بدانید و شکستها پیشبینیپذیر و کوچک میشوند۔
چرا همان فرمان درون یک اسکریپت شکست میخورد
کارخواه پاسخهایش را از ورودی استاندارد میخواند، برای هر اعلان یک خط، به ترتیبی که دروازه آنها را میپرسد۔ هر چیزی که شمار اعلانها را تغییر دهد، مانند یک بنر تازه، گزینشگر گروه یا چالش عامل دوم، هر پاسخ بعدی را یک خط جابهجا میکند۔ سپس کارخواه جایی که انتظار رمز عبور داشت نام کاربری میخواند و شکستی را گزارش میکند که به هیچکدام اشاره نمیکند۔
رمز عبوری که علامت تعجب دارد شکست دوم آرامتری میافزاید۔ درون گیومههای دوتایی پوسته آن را بسیار پیش از آنکه کارخواه چیزی ببیند گسترش میدهد۔
بار را در گیومههای تک بگذارید و نویسه دستنخورده سفر میکند۔ این تمام اصلاح است و کلاس کاملی از گزارشها را توضیح میدهد که در آنها همان اعتبارنامه هنگام تایپ کار میکند و هنگام ذخیره شکست میخورد۔ پیش از بررسی دروازه، ببینید پوسته چه کرده است: بار را از میان پوششی که بایتهای دقیق را نشان میدهد چاپ کنید و خطوط را بشمارید۔ بیشتر این بررسیها همانجا پایان مییابند۔
پاسخها را به ترتیبی که کارخواه میپرسد بنویسید
کارخواه را یک بار تعاملی اجرا کنید و هر اعلان را به ترتیب بنویسید۔ گزینشگر گروه تنها زمانی پدیدار میشود که دروازه چند نمایه منتشر کند، و اعلان بنر تنها زمانی که یکی پیکربندی شده باشد۔ پرونده پاسخ باید با دروازهای که واقعاً به آن اشاره میکنید بخواند، نه آن یکی که در مستندات است۔
سپس پرونده را با همان دنباله دقیق بسازید، برای هر خط یک پاسخ۔ نمایه گروه شمارهای است که کارخواه فهرست میکند، نه جایگاه یک نمایه در یک سند۔ بنر را تنها اگر دروازهتان یکی میفرستد بپذیرید، و برای هر پرسش اضافهای که آن دروازه میداند میپرسد خطی بیفزایید۔ کارخواه را با پرچم غیرتعاملی آغاز کنید تا پرونده را مصرف کند نه آنکه منتظر ترمینال بماند۔
connect vpn.lab.example
0
username
password
y
exit/opt/cisco/anyconnect/bin/vpn -s < anyconnect.txtهمان دنباله میتواند از راه یک لوله برسد هنگامی که ترجیح میدهید پروندهای روی دیسک نگه ندارید۔ قواعد نقلقول همچنان تعیین میکنند که جان سالم به در میبرد یا نه۔
اعتبارنامه را از فهرست فرایندها بیرون نگه دارید
یک آرگومان در خط فرمان برای هر کاربر محلی در تمام عمر فرایند خواندنی است، پس رمز عبور به پرونده یا لوله تعلق دارد و هرگز به فهرست آرگومانها نه۔ آن پرونده را تنها برای حسابی که اسکریپت را اجرا میکند خواندنی کنید و وقتی کار تمام شد پاکش کنید۔ در macOS فایل دودویی معمولاً همان مسیری را دارد که در Linux، اما جای نصبشده را تأیید کنید نه آنکه فرضش بگیرید۔ پوششی که هر دو مسیر را میآزماید از گزارش حادثه کوتاهتر است۔
printf 'username\npassword\ny\n' | /opt/cisco/anyconnect/bin/vpn -s connect vpn.lab.exampleنگذارید اسکریپت هم تا ابد دوباره تلاش کند۔ بنر تغییرکرده یا رمز عبوری که شبانه منقضی شده پرونده پاسخ ثابت را به حلقه تلاش دوباره تبدیل میکند، و همان حلقه است که حساب را قفل میکند۔
یک بار شکست بخورید، متن خطای خود کارخواه را چاپ کنید و خارج شوید۔ کار زمانبندیشده به همان بازبینی هویت و دسترسپذیری اعتبارنامه نیاز دارد که هر وظیفه بیناظر دیگری، زیرا اعتبارنامهای که بیصدا منقضی میشود از یک قطعی در ساعت سه بامداد قابل تشخیص نیست۔
پیش از اعتماد به کد خروج، نشست را تأیید کنید
وضعیت متصل ثابت میکند که تونل وجود دارد و چیزی بیش از آن نه۔ پیش از آنکه اسکریپت کار واقعی را آغاز کند یک منبع را که باید از طریق آن در دسترس باشد بیازمایید، و شکست آنجا را نقصی متفاوت از ورود ناموفق بدانید۔ وگرنه اتصالی کاملاً سالم را دوباره تلاش میکنید که فقط نمیتواند به مقصدش برسد۔
پیش و پس از قطع اتصال وضعیت کارخواه را بپرسید، زیرا نشستی کهنه میتواند اتصال بعدی را رد کند در حالی که اسکریپت شما موفقیت گزارش میدهد۔
/opt/cisco/anyconnect/bin/vpn state
/opt/cisco/anyconnect/bin/vpn disconnectخروجی وضعیت را کنار کد خروج ثبت کنید، چون کد تنها نمیتواند ورود ردشده را از نشستی که هرگز بسته نشد جدا کند۔ هنگامی که دروازه عامل دومی یا تأیید تعاملی میخواهد، اسکریپتکردن آن گام را رها کنید و بهجای آن سازوکاری را به کار ببرید که کارخواه پشتیبانی میکند۔ پرونده پاسخ ثابت راحتیای برای اعتبارنامهای است که شما کنترل میکنید، نه راهی برای دور زدن گام احراز هویتی که کنترل نمیکنید۔ دامنه را اینقدر باریک نگه دارید و این یک اسکریپت کوتاه میماند۔
کی پرونده پاسخ ثابت ابزار نادرست است
عامل دوم یا اعلان تأیید این الگو را کاملاً از کار میاندازند، و این مرز طراحی است نه معمای اسکریپتنویسی۔ از هر سازوکاری که کارخواه برای آن گام پشتیبانی میکند استفاده کنید بهجای آنکه پاسخ را از پیش حدس بزنید۔ پرونده ثابت تنها برای اعتبارنامههایی کار میکند که میان اجراها یکسان میمانند۔
دو سبک کهنتر اعتبارنامه هم با AnyConnect اشتباه گرفته میشوند۔ نمایه vpnc به پروتکل دیگری سخن میگوید و نام گروه را بهعنوان شناسه IPSec میخواهد، سپس یک راز گروهی مشترک، سپس جزئیات حساب خودتان۔
چون پروتکلها متفاوتاند، vpnc نمیتواند به دروازهای برسد که تنها نمایههای AnyConnect را منتشر میکند، و جانشین باز معمول برای آن سرویس openconnect است با پروتکل anyconnect برگزیده۔ پرونده pcf به کارخواه کهن Cisco تعلق دارد و گرچه میزبان، نام گروه و گذرواژه گروهش را میتوان در کارخواهی که هنوز Cisco IPsec میگوید دوباره وارد کرد، پرونده میان کارخواهها منتقل نمیشود۔ درگاه نامعمول یا حالت تونلسازی غیراستاندارد معمولاً در آن انتقال از دست میرود۔ پیش از گزیدن ابزار روشن کنید دروازه کدام پروتکل را عرضه میکند۔