پوریا که در تیم امنیت مشغول به کار است لیستی از آیپیهای مختلف جهت تنظیم دسترسی کاربران تهیه کرده است. او اکنون از شما میخواهد اسکریپتی برای او بنویسید که با استفاده از آن بتواند عملیات مسدود یا آزاد سازی آیپیهای مختلف را به راحتی انجام دهد.
### جزئیات پروژه
اسکریپت `Ip_manager.sh` را مطابق توضیحات زیر پیادهسازی کنید:
+ نحوهی اجرای اسکریپت بهصورت `./Ip_manager.sh command ip_list_filepath` یا `Ip_manager.sh command IP` است. مثال:
```
./Ip_manager.sh block ./ip_lists/sample.txt
```
و یا :
```
./Ip_manager.sh block 104.28.193.140
```
+ اگر تعداد آرگومانهای ورودی اسکریپت کمتر از ۲ تا بود، اسکریپت باید عبارت `not enough arguments` را چاپ کند و متوقف شود.
+ اگر مقدار `command` برابر با `block` یا `unblock` نبود، اسکریپت باید عبارت `invalid command` را چاپ کند و متوقف شود.
+ اگر فایلی که مسیر آن بهعنوان آرگومان دوم وارد میشود وجود نداشت و یا آیپی وارد شده معتبر نبود، اسکریپت باید عبارت `File does not exist or invalid IP` را چاپ کند و متوقف شود.
+ اگر مقدار `command` برابر با `block` باشد و آدرس یک فایل وارد شود، اسکریپت باید لیست بازههای آیپی موجود در فایل را دریافت کند و درخواستهای ورودی مربوط به این آیپیها را بهازای همهی پروتکلها و پورتها `DROP` کند. اگر _rule_ مربوط به `ACCEPT` کردن این درخواستها از قبل موجود بود، اسکریپت باید آنها را حذف کند.
+ اگر مقدار `command` برابر با `block` باشد و یک آیپی وارد شود، اسکریپت باید درخواستهای ورودی مربوط به این آیپی را بهازای همهی پروتکلها و پورتها `DROP` کند. اگر _rule_ مربوط به `ACCEPT` کردن این درخواستها از قبل موجود بود، اسکریپت باید آنها را حذف کند.
+ اگر مقدار `command` برابر با `unblock` باشد و آدرس یک فایل وارد شود، اسکریپت باید لیست بازههای آیپی موجود در فایل را دریافت کند و درخواستهای ورودی مربوط به این آیپیها را بهازای همهی پروتکلها و پورتها `ACCEPT` کند. اگر _rule_ مربوط به `DROP` کردن این درخواستها از قبل موجود بود، اسکریپت باید آنها را حذف کند.
+ اگر مقدار `command` برابر با `unblock` باشد و و یک آیپی وارد شود، اسکریپت باید درخواستهای ورودی مربوط به این آیپی را بهازای همهی پروتکلها و پورتها `ACCEPT` کند. اگر _rule_ مربوط به `DROP` کردن این درخواستها از قبل موجود بود، اسکریپت باید آنها را حذف کند.
+ آیپی ورودی میتواند به صورت `104.28.193.140` یا یک بازه مانند `95.170.192.0/19` باشد.
### نکات
+ عملیات مسدودسازی و آزادسازی درخواستها باید با استفاده از `iptables` انجام شود.
+ داوری این سؤال کمی بیشتر از سایر سؤالات طول میکشد.
+ تضمین میشود که هیچ _rule_ ای خارج از اسکریپت اضافه نمیشود.
### نحوه ارسال
پس از پیادهسازی موارد خواستهشده، فایل `Ip_manager.sh` را آپلود کنید.
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.