*پیمان* مسئول *DevOps* یک سایت شده که چند کاربر بَلا دارد که ریکوئستهای زیادی میزنند و *پیمان* میخواهد آنها را بلاک کند.
به *پیمان* کمک کنید از روی فایل لاگ `nginx` بتواند آن دسته از *IPهایی* که **بیشتر از** `n` **ریکوئست در دقیقه** زدهاند را با استفاده از `iptables` بلاک کند. او برای این کار یک اسکریپت **bash** نیاز دارد که *argumentهای* **آدرس فایل لاگ** و **عدد n** را دریافت کند.
برای دانلود پروژهی اولیه روی [این لینک](/problemset/assignments/4367/download_problem_initial_project/129768/) کلیک کنید.
## نکات تکمیلی
۱. نمونه لاگ `nginx` که در داوری استفاده میشود در فایل `nginx_logs_sample` در پروژهی اولیه ( [این لینک](/problemset/assignments/4367/download_problem_initial_project/129768/) ) قرار دارد. بخشی از این لاگ نمونه:
```
148.251.49.20 - - [20/May/2021:19:05:24 +0000] "GET /downloads/product_2 HTTP/1.1" 200 931 "-" "Wget/1.13.4 (linux-gnu)"
104.131.19.181 - - [20/May/2021:19:05:31 +0000] "GET /downloads/product_1 HTTP/1.1" 404 328 "-" "Debian APT-HTTP/1.3 (1.0.1ubuntu2)"
37.16.72.129 - - [20/May/2021:19:05:25 +0000] "GET /downloads/product_1 HTTP/1.1" 304 0 "-" "Debian APT-HTTP/1.3 (0.8.10.3)"
37.16.72.129 - - [20/May/2021:19:05:01 +0000] "GET /downloads/product_1 HTTP/1.1" 404 340 "-" "Debian APT-HTTP/1.3 (0.8.10.3)"
37.16.72.129 - - [20/May/2021:19:05:41 +0000] "GET /downloads/product_1 HTTP/1.1" 404 337 "-" "Debian APT-HTTP/1.3 (0.8.10.3)"
```
۲. برای نمونه اسکریپتی که شما مینویسید با دستور زیر اجرا و داوری خواهد شد:
```sh
bash blocker.sh nginx_logs_sample 7
```
پس از اجرای دستور فوق با فایل لاگ نمونه که در پروژه اولیه در اختیارتان است، باید IP های زیر در **iptables** بلاک شوند:
```
129.67.24.6
130.199.3.165
137.117.180.46
137.117.183.81
137.117.184.211
137.117.184.219
148.251.112.153
148.251.23.199
173.255.243.139
174.103.128.249
178.62.213.239
180.179.174.219
185.20.227.198
186.67.186.2
192.133.141.142
193.84.27.10
200.28.3.2
200.28.3.3
209.177.145.225
216.46.173.126
217.168.17.5
50.57.209.100
54.144.73.8
54.165.189.135
54.172.110.13
54.172.164.189
54.173.226.7
54.194.93.59
54.213.131.92
54.244.94.5
54.77.28.244
54.84.191.5
5.63.153.125
5.63.157.73
65.39.197.164
72.32.152.84
74.125.60.158
80.91.33.133
84.208.15.12
85.21.237.138
89.191.68.234
94.236.106.132
94.242.57.74
94.242.58.153
94.242.58.216
```
## نحوه ارسال پاسخ
شما تنها مجاز به ارسال فایل `blocker.sh` هستید.
``` bash blocker.sh
#!/bin/bash
log_path=$1
n=$2
# TODO: Block IPs with more than n request per minute by iptables
```