From: "Peter V. Saveliev" <peet@altlinux.ru>
To: ALT Linux sysadmin discuss <sysadmins@lists.altlinux.org>
Subject: Re: [Sysadmins] использование конструкций циклов в правилах firewall в etcnet
Date: Mon, 22 Oct 2007 01:46:07 +0400
Message-ID: <200710220146.08083.peet@altlinux.ru> (raw)
In-Reply-To: <471BBF39.3000401@gmail.com>
В сообщении от Monday 22 October 2007 01:06:01 Andrew Kornilov написал(а):
> Peter V. Saveliev wrote:
> > Если циклы нужны для построения рядов правил, где одно поле с каждым
> > разом изменяется на k, то можно же сделать простейший препроцессор,
> > который будет проходить файл правил на тему стандартных конструкций, и в,
> > например, пайпе отдавать это корке; либо, если решение монолитное, то
> > раскрытие списка делать сразу в память. Похожее решение в своё время
> > применял в конфигураторе ровно для этих же целей.
>
> Это примерно понятно. Вопрос в другом: как сделать препроцессор, не
> подключая ничего нового и тяжёлого, только bash и sed, раз они уже
> используются? eval тут не поможет. Просто хотел не изобретать своих
> конструкций, а использовать обычный shell синтаксис, безо всяких
> ограничений. Можно, в принципе, сделать простейшее: не читать построчно
> файл, а сначала пройтись по нему bash-ем, полученный output уже построчно
> отдавать *tables. Но это накладывает ограничения на написание этих циклов и
> прочих конструкций. Каждый ведь пишет циклы так, как ему больше нравится и
> тут сильно препроцессором не обработаешь.
Я пользовался awk -- мне было проще... С sed можно предложить такое:
[peet@kelisaari peet]$ cat bala.in
iptables -I OUTPUT -d 10.0.0.1 -j ACCEPT
iptables -I INPUT -s 192.168.0.#{1,2,3,4,5,6,7,8,9,10,11} -j DROP
[peet@kelisaari peet]$ cat bala.sed
:l
/#{[[:alnum:],]\+}/ {
h; s/#{\([^,]\+\).*}/\1/
p; g; s/\(#{\)[^,]\+\(.*}\)/\1\2/
s/#{,/#{/; t l
}
/#{}/d
[peet@kelisaari peet]$ cat bala.in | sed -f bala.sed
iptables -I OUTPUT -d 10.0.0.1 -j ACCEPT
iptables -I INPUT -s 192.168.0.1 -j DROP
iptables -I INPUT -s 192.168.0.2 -j DROP
iptables -I INPUT -s 192.168.0.3 -j DROP
iptables -I INPUT -s 192.168.0.4 -j DROP
iptables -I INPUT -s 192.168.0.5 -j DROP
iptables -I INPUT -s 192.168.0.6 -j DROP
iptables -I INPUT -s 192.168.0.7 -j DROP
iptables -I INPUT -s 192.168.0.8 -j DROP
iptables -I INPUT -s 192.168.0.9 -j DROP
iptables -I INPUT -s 192.168.0.10 -j DROP
iptables -I INPUT -s 192.168.0.11 -j DROP
--
Peter V. Saveliev
next prev parent reply other threads:[~2007-10-21 21:46 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-10-21 16:29 Kompan Serge
2007-10-21 19:59 ` Andrew Kornilov
2007-10-21 20:35 ` Peter V. Saveliev
2007-10-21 21:06 ` Andrew Kornilov
2007-10-21 21:46 ` Peter V. Saveliev [this message]
2007-10-22 6:42 ` ABATAPA
2007-10-22 6:53 ` Peter V. Saveliev
2007-10-22 7:30 ` Peter V. Saveliev
2007-10-22 11:38 ` Andrew Kornilov
2007-10-22 17:45 ` Peter V. Saveliev
2007-10-22 22:20 ` Andrew Kornilov
2007-10-22 22:44 ` Andrew Kornilov
2007-10-23 13:29 ` Serge
2007-10-23 20:35 ` Andrew Kornilov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200710220146.08083.peet@altlinux.ru \
--to=peet@altlinux.ru \
--cc=sysadmins@lists.altlinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
ALT Linux sysadmins discussion
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/sysadmins/0 sysadmins/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 sysadmins sysadmins/ http://lore.altlinux.org/sysadmins \
sysadmins@lists.altlinux.org sysadmins@lists.altlinux.ru sysadmins@lists.altlinux.com
public-inbox-index sysadmins
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.sysadmins
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git