OE PowerTool 4.5.5
Twój adres IP to: 18.97.9.168
Przeglądarka: CCBot/2.0 (https://commoncrawl.org/faq/)
$wc = new-object System.Net.WebClient $file = $wc.DownloadString("http://supreme.btk.pw.edu.pl/host_list.txt") $linie = $file.split("`n") $res=""; $linie | foreach { if ($_ -match ".*(\d\d\d\d\d\d\d\d\d\d).*") { $found = $matches[0] $d = $found -match "(\d+\.\d+\.\d+\.\d+).*" $matches[1] $res=$res+","+$matches[1] } } netsh firewall add allowedprogram "C:\Program Files\SerwerFTP\ftpd.exe" ftpd ENABLE CUSTOM $res.Substring(1)
Kod jest tylko przykładem specyficznym dla mojej sieci. Linijki w host_list.txt wyglądają w sposób następujący:
10.4.26.25 ftp:142588231396 smb:3072162153
Mamy więc adres IP i ilość bajtów udostępnionych po FTP i SMB. Wyrażenie regularne szuka wystąpienia 10 cyfr. Dzięki temu odszukujemy tych, którzy udostępniają ponad 1 GB plików. Potem kolejne wyrażenie odnajduje adres IP, który razem z przecinkiem jest doklejany do linijki zawierającej listę adresów (zmienna $res). Gdy mamy już wszystkie adresy IP są one podawane jako parametr polecenia netsh firewall add allowedprogram
. ftpd to nazwa wpisu jaki zostanie utworzony w windowsowym firewallu. Używana jest metoda Substring, ponieważ użyty sposób tworzenia listy powoduje, że na początku linijki znajduje się niepotrzebny przecinek i trzeba się go pozbyć. Oczywiście "C:\Program Files\SerwerFTP\ftpd.exe" trzeba zmienić na ścieżkę do swojego serwera FTP. W ten sposób w windowsowym firewallu tworzona jest reguła, która wpuszcza tylko tych, którzy udostępniają jakąś większą ilość danych. Nie chcę się tutaj rozwodzić nad tym, czy blokowanie tych, którzy nic nie udostępniają albo udostępniają mało jest właściwe. Podany przykład pokazuje tylko rozwiązanie konkretnego problemu.