ALT Linux sysadmins discussion
 help / color / mirror / Atom feed
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

  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