Date: Thu, 30 Mar 2017 23:56:08 -0400 From: David Mehler <dave.mehler@gmail.com> To: Ultima <ultima1252@gmail.com> Cc: freebsd-questions <freebsd-questions@freebsd.org> Subject: Re: shell script guru Message-ID: <CAPORhP73=2_5nfOaR=a=TZTOyquBSZRS===FakeJWMPLjpNMjw@mail.gmail.com> In-Reply-To: <CANJ8om6svf%2B6sgrV4UW8F=aidaHhWce%2BfNO4-g4Lfa2QteYa7w@mail.gmail.com> References: <CAPORhP5ESqJL%2BkK4tfSD5t5=fnFjsCNXGdUhAjMpezq4WdjKyw@mail.gmail.com> <CADbyKk61wyYj1Jgc9daFTbXE_9s5xPLEYHa4p=KF8FhngzOQ3Q@mail.gmail.com> <CAPORhP6%2Bu4DpUq=9WJ9XmSHDYSJSmXaa6_o7NnVtOq=n_g0v=w@mail.gmail.com> <CAFsnNZL8EgYQK9u_mz4BB%2BULwo9xgsPFT%2BP-4uD4-tqHd%2Bn2QQ@mail.gmail.com> <CANJ8om6svf%2B6sgrV4UW8F=aidaHhWce%2BfNO4-g4Lfa2QteYa7w@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Hello, My thanks to everyone who helped me. I've got a solution, and have set it in my monthly periodic checks in /etc/periodic/monthly. I've got two solutions both of which retrieve the country database. In pf I have a table that blocks the ip's in the table. Here's the perl script: #!/usr/bin/env perl open(ZONES, "<zonesfile"); while(<ZONES>) { chomp; system("wget -4 --no-proxy --no-cookies --no-cache http://ipdeny.com/ipblocks/data/countries/$_.zone"); system("cat $_.zone >>blocked_zones"); unlink($_); sleep(2); } close(ZONES); ssystem("mv blocked_zones /etc/pf"); ssystem("pfctl -f /etc/pf.conf)"; pf.conf: table <blocked_countries persist "/etc/pf/blocked_countries" block in quick from <blocked_tables> The zonesfile contains countries in quotes one per line: "al" "cz" "ch" ... etc Here's the script that I put in monthly: #!/bin/sh # # Monthly retrieve the selected country IP block lists # Retrieves dns zones from ipdeny.com # Adds the zones to a country block file # Then adds them to a pf block table # If there is a global system configuration file, suck it in. # if [ -r /etc/defaults/periodic.conf ] then . /etc/defaults/periodic.conf source_periodic_confs fi case "$monthly_country_blocks_enable" in [Yy][Ee][Ss]) cd /tmp echo "Retrieving Zones" for i in "af" "al" "dz" "am" "az" "ba" "br" "kh" "cf" "cn" "co" "cr" "hr" "cu" "cy" "cz" "do" "eg" "fr" "gi" "ht" "ir" "iq" "jp" "jo" "kz" "kp" "kr" "kw" "lb" "li" "ni" "ne" "ng" "om" "pk" "qa" "ro" "ru" "sa" "rs" "so" "za" "sy" "tj" "tr" "tm" "ae" "uz" "vn" "ye" ; do wget -4 --no-proxy --no-cookies --no-cache --append-output=/var/log/wget.log http://ipdeny.com/ipblocks/data/countries/$i.zone cat $i.zone >>/tmp/blocked_countries rm $i.zone sleep 2 done echo "Removing all *.zone files" echo "Moving the temp file in to place" mv /tmp/blocked_countries /etc/pf # Restarting pf pfctl -f /etc/pf.conf echo "Complete" esac exit $rc Hope this is useful to someone else. Thanks again. Dave. On 3/30/17, Ultima <ultima1252@gmail.com> wrote: > Curl is probably the correct utility for this job. With curl the cat and rm > command can be negated entirely, although I'm not sure it has the same > option set if explicitly required. Just stdout to the desired file. If a > fresh list each use of the command is needed, add an rm before the for. > > On Thu, Mar 30, 2017 at 8:19 PM, William Dudley <wfdudley@gmail.com> wrote: > >> for i in "vn.zone" "uz.zone" "tm.zone" ; >> do >> wget -4 --no-proxy --no-cookies --no-cache \ >> http://ipdeny.com/ipblocks/data/countries/$i >> cat $i >>blocked_zones >> rm $i >> sleep 2 >> done >> >> Like that? >> >> Bill >> >> This email is free of malware because I run Linux. >> >> On Thu, Mar 30, 2017 at 8:02 PM, David Mehler <dave.mehler@gmail.com> >> wrote: >> >> > Hello, >> > >> > My question is regarding a shell script and pf. >> > >> > What I'm wanting to do is take a selected list of countries and cat >> > them in to a file and use that as pf input. Here's a sequential >> > example: >> > >> > #!/bin/sh >> > # >> > PATH=/bin:/usr/local/bin:/sbin >> > cd /tmp >> > mkdir zones >> > cd zones >> > # -4 = use IPv4 only >> > # --no-proxy = don't care for proxies >> > # --no-cookies = don't accept cookies >> > # --no-cache = no cached files >> > wget -4 --no-proxy --no-cookies --no-cache \ >> > http://ipdeny.com/ipblocks/data/countries/cn.zone # CHINA >> > sleep 2 >> > wget -4 --no-proxy --no-cookies --no-cache \ >> > http://ipdeny.com/ipblocks/data/countries/az.zone # AZERBAIJAN >> > sleep 2 >> > wget -4 --no-proxy --no-cookies --no-cache \ >> > http://ipdeny.com/ipblocks/data/countries/by.zone # BELARUS >> > sleep 2 >> > wget -4 --no-proxy --no-cookies --no-cache \ >> > http://ipdeny.com/ipblocks/data/countries/kz.zone # KAZAKHSTAN >> > sleep 2 >> > wget -4 --no-proxy --no-cookies --no-cache \ >> > http://ipdeny.com/ipblocks/data/countries/kg.zone # KYRGYZSTAN >> > sleep 2 >> > wget -4 --no-proxy --no-cookies --no-cache \ >> > http://ipdeny.com/ipblocks/data/countries/ru.zone # RUSSIAN >> > FEDERATION >> > sleep 2 >> > wget -4 --no-proxy --no-cookies --no-cache \ >> > http://ipdeny.com/ipblocks/data/countries/tj.zone # TAJIKISTAN >> > sleep 2 >> > wget -4 --no-proxy --no-cookies --no-cache \ >> > http://ipdeny.com/ipblocks/data/countries/tm.zone # >> > TURKMENISTAN >> > sleep 2 >> > wget -4 --no-proxy --no-cookies --no-cache \ >> > http://ipdeny.com/ipblocks/data/countries/uz.zone # UZBEKISTAN >> > sleep 2 >> > wget -4 --no-proxy --no-cookies --no-cache \ >> > http://ipdeny.com/ipblocks/data/countries/vn.zone # VIET NAM >> > # >> > cat cn.zone > blocked_zones >> > cat az.zone >> blocked_zones >> > cat by.zone >> blocked_zones >> > cat kz.zone >> blocked_zones >> > cat kg.zone >> blocked_zones >> > cat ru.zone >> blocked_zones >> > cat tj.zone >> blocked_zones >> > cat tm.zone >> blocked_zones >> > cat uz.zone >> blocked_zones >> > cat vn.zone >> blocked_zones >> > # >> > rm *.zone >> > # >> > mv blocked_zones /etc/pf/ >> > pfctl -f /etc/pf.conf >> > >> > There are 250 plus zones just in the ipv4 space, and about the same in >> > the ipv6 space. I do not want to manually take down each domain, three >> > times, that's error prown and very easy to miss one. I thought about >> > doing an array, and feeding that to a loop which would cut down the >> > number of lines of repeative code. >> > >> > Help appreciated. >> > >> > Thanks. >> > Dave. >> > >> > >> > On 3/30/17, Rajarajan Rajamani <r.rajamani@gmail.com> wrote: >> > > Ask your question and I am sure someone will answer! >> > > >> > > On Mar 30, 2017 7:37 PM, "David Mehler" <dave.mehler@gmail.com> >> > > wrote: >> > > >> > >> Hello, >> > >> >> > >> Any shell scripting gurus here please contact me offlist. I have a >> > >> question that I can't figure out. >> > >> >> > >> Thanks. >> > >> Dave. >> > >> _______________________________________________ >> > >> freebsd-questions@freebsd.org mailing list >> > >> https://lists.freebsd.org/mailman/listinfo/freebsd-questions >> > >> To unsubscribe, send any mail to "freebsd-questions- >> > >> unsubscribe@freebsd.org" >> > >> >> > > >> > _______________________________________________ >> > freebsd-questions@freebsd.org mailing list >> > https://lists.freebsd.org/mailman/listinfo/freebsd-questions >> > To unsubscribe, send any mail to "freebsd-questions- >> > unsubscribe@freebsd.org" >> > >> _______________________________________________ >> freebsd-questions@freebsd.org mailing list >> https://lists.freebsd.org/mailman/listinfo/freebsd-questions >> To unsubscribe, send any mail to "freebsd-questions- >> unsubscribe@freebsd.org" >> >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAPORhP73=2_5nfOaR=a=TZTOyquBSZRS===FakeJWMPLjpNMjw>