* [Sysadmins] использование конструкций циклов в правилах firewall в etcnet @ 2007-10-21 16:29 Kompan Serge 2007-10-21 19:59 ` Andrew Kornilov 0 siblings, 1 reply; 14+ messages in thread From: Kompan Serge @ 2007-10-21 16:29 UTC (permalink / raw) To: ALT Linux sysadmin discuss Здравствуйте! можно ли реализовать сабж, если да покажите плиз пример. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Sysadmins] использование конструкций циклов в правилах firewall в etcnet 2007-10-21 16:29 [Sysadmins] использование конструкций циклов в правилах firewall в etcnet Kompan Serge @ 2007-10-21 19:59 ` Andrew Kornilov 2007-10-21 20:35 ` Peter V. Saveliev 0 siblings, 1 reply; 14+ messages in thread From: Andrew Kornilov @ 2007-10-21 19:59 UTC (permalink / raw) To: ALT Linux sysadmin discuss Kompan Serge wrote: > Здравствуйте! > можно ли реализовать сабж, если да покажите плиз пример. К сожалению, штатно - нет. Когда я хотел это сделать, не смог придумать, как это сделать просто и красиво. Если есть предложения, то пишите. p.s. Можно обойтись грязным хаком, разместив на одной строке (файл читается построчно) что-то вроде $(for somerule in something; do $IPTABLES -I $somerule >/dev/null ;done) Но это, как говорится, потрясение устоев :) ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Sysadmins] использование конструкций циклов в правилах firewall в etcnet 2007-10-21 19:59 ` Andrew Kornilov @ 2007-10-21 20:35 ` Peter V. Saveliev 2007-10-21 21:06 ` Andrew Kornilov 0 siblings, 1 reply; 14+ messages in thread From: Peter V. Saveliev @ 2007-10-21 20:35 UTC (permalink / raw) To: ALT Linux sysadmin discuss В сообщении от Sunday 21 October 2007 23:59:41 Andrew Kornilov написал(а): > Kompan Serge wrote: > > Здравствуйте! > > можно ли реализовать сабж, если да покажите плиз пример. > > К сожалению, штатно - нет. Когда я хотел это сделать, не смог > придумать, как это сделать просто и красиво. Если есть предложения, > то пишите. > <skip /> Если циклы нужны для построения рядов правил, где одно поле с каждым разом изменяется на k, то можно же сделать простейший препроцессор, который будет проходить файл правил на тему стандартных конструкций, и в, например, пайпе отдавать это корке; либо, если решение монолитное, то раскрытие списка делать сразу в память. Похожее решение в своё время применял в конфигураторе ровно для этих же целей. -- Peter V. Saveliev ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Sysadmins] использование конструкций циклов в правилах firewall в etcnet 2007-10-21 20:35 ` Peter V. Saveliev @ 2007-10-21 21:06 ` Andrew Kornilov 2007-10-21 21:46 ` Peter V. Saveliev ` (2 more replies) 0 siblings, 3 replies; 14+ messages in thread From: Andrew Kornilov @ 2007-10-21 21:06 UTC (permalink / raw) To: ALT Linux sysadmin discuss Peter V. Saveliev wrote: > Если циклы нужны для построения рядов правил, где одно поле с каждым разом > изменяется на k, то можно же сделать простейший препроцессор, который будет > проходить файл правил на тему стандартных конструкций, и в, например, пайпе > отдавать это корке; либо, если решение монолитное, то раскрытие списка делать > сразу в память. Похожее решение в своё время применял в конфигураторе ровно > для этих же целей. Это примерно понятно. Вопрос в другом: как сделать препроцессор, не подключая ничего нового и тяжёлого, только bash и sed, раз они уже используются? eval тут не поможет. Просто хотел не изобретать своих конструкций, а использовать обычный shell синтаксис, безо всяких ограничений. Можно, в принципе, сделать простейшее: не читать построчно файл, а сначала пройтись по нему bash-ем, полученный output уже построчно отдавать *tables. Но это накладывает ограничения на написание этих циклов и прочих конструкций. Каждый ведь пишет циклы так, как ему больше нравится и тут сильно препроцессором не обработаешь. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Sysadmins] использование конструкций циклов в правилах firewall в etcnet 2007-10-21 21:06 ` Andrew Kornilov @ 2007-10-21 21:46 ` Peter V. Saveliev 2007-10-22 6:42 ` ABATAPA 2007-10-22 7:30 ` Peter V. Saveliev 2 siblings, 0 replies; 14+ messages in thread From: Peter V. Saveliev @ 2007-10-21 21:46 UTC (permalink / raw) To: ALT Linux sysadmin discuss В сообщении от 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 ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Sysadmins] использование конструкций циклов в правилах firewall в etcnet 2007-10-21 21:06 ` Andrew Kornilov 2007-10-21 21:46 ` Peter V. Saveliev @ 2007-10-22 6:42 ` ABATAPA 2007-10-22 6:53 ` Peter V. Saveliev 2007-10-22 7:30 ` Peter V. Saveliev 2 siblings, 1 reply; 14+ messages in thread From: ABATAPA @ 2007-10-22 6:42 UTC (permalink / raw) To: ALT Linux sysadmin discuss 22 октября 2007 г. Andrew Kornilov написал: > Это примерно понятно. Вопрос в другом: как сделать препроцессор, не > подключая ничего нового и тяжёлого, только bash и sed, раз они уже > используются? Чем не нравится #!/bin/bash for i in {1..3}; do ... for i in $(seq 200 1); do ... -- ABATAPA ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Sysadmins] использование конструкций циклов в правилах firewall в etcnet 2007-10-22 6:42 ` ABATAPA @ 2007-10-22 6:53 ` Peter V. Saveliev 0 siblings, 0 replies; 14+ messages in thread From: Peter V. Saveliev @ 2007-10-22 6:53 UTC (permalink / raw) To: ALT Linux sysadmin discuss В сообщении от Monday 22 October 2007 10:42:00 ABATAPA написал(а): > 22 октября 2007 г. Andrew Kornilov написал: > > Это примерно понятно. Вопрос в другом: как сделать препроцессор, не > > подключая ничего нового и тяжёлого, только bash и sed, раз они уже > > используются? > > Чем не нравится > #!/bin/bash > > for i in {1..3}; do ... > for i in $(seq 200 1); do ... вероятно, тем, что это опускает соответствующий модуль на уровень rc.local... Ибо для того, чтобы писать скрипты на bash, etcnet ставить не обязательно. Варианты с препроцессингом а) интуитивно понятнее б) легче читаются. Имхо, стоит усилий, хотя выбор bash+sed only мне кажется неоправданным -- bash+awk уже было бы проще разрабатывать/поддерживать, а awk места откушает не намного больше, чем sed. -- Peter V. Saveliev ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Sysadmins] использование конструкций циклов в правилах firewall в etcnet 2007-10-21 21:06 ` Andrew Kornilov 2007-10-21 21:46 ` Peter V. Saveliev 2007-10-22 6:42 ` ABATAPA @ 2007-10-22 7:30 ` Peter V. Saveliev 2007-10-22 11:38 ` Andrew Kornilov 2 siblings, 1 reply; 14+ messages in thread From: Peter V. Saveliev @ 2007-10-22 7:30 UTC (permalink / raw) To: ALT Linux sysadmin discuss <skip /> [peet@kelisaari peet]$ echo -e "поросёнок N#{0-12} умер\nвсе поросята умерли :(" | ./bala.sh поросёнок N0 умер поросёнок N1 умер поросёнок N2 умер поросёнок N3 умер поросёнок N4 умер поросёнок N5 умер поросёнок N6 умер поросёнок N7 умер поросёнок N8 умер поросёнок N9 умер поросёнок N10 умер поросёнок N11 умер поросёнок N12 умер все поросята умерли :( [peet@kelisaari peet]$ cat bala.sh #!/bin/sh while read bala; do { r='s/\(.*\)#{\([0-9]\+\)-\([0-9]\+\)}\(.*\)/\' a=`echo $bala | sed -n $r"1/p"` b=`echo $bala | sed -n $r"2/p"` c=`echo $bala | sed -n $r"3/p"` d=`echo $bala | sed -n $r"4/p"` if [ -z "$b" -o -z "$c" ]; then { echo $bala } else { for i in $(seq $b $c); do { echo $a$i$d } done } fi } done ЗЫ: но имхо -- всё это порядочный изврат. -- Peter V. Saveliev ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Sysadmins] использование конструкций циклов в правилах firewall в etcnet 2007-10-22 7:30 ` Peter V. Saveliev @ 2007-10-22 11:38 ` Andrew Kornilov 2007-10-22 17:45 ` Peter V. Saveliev 0 siblings, 1 reply; 14+ messages in thread From: Andrew Kornilov @ 2007-10-22 11:38 UTC (permalink / raw) To: ALT Linux sysadmin discuss Peter V. Saveliev wrote: > ЗЫ: но имхо -- всё это порядочный изврат. Да, в том-то и дело. Можно, конечно, взять пяток каких-то наиболее распространенных случаев (циклы, условия) и для них что-то нарисовать. Но всегда найдется тот, кто захочет шестой случай. Попробую подумать, может все-таки получится легко сделать обычный shell скрестить до конца. В принципе, оно и сейчас можно...Но делать ЯВУ типа firehall не хочется, их и так достаточно. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Sysadmins] использование конструкций циклов в правилах firewall в etcnet 2007-10-22 11:38 ` Andrew Kornilov @ 2007-10-22 17:45 ` Peter V. Saveliev 2007-10-22 22:20 ` Andrew Kornilov 0 siblings, 1 reply; 14+ messages in thread From: Peter V. Saveliev @ 2007-10-22 17:45 UTC (permalink / raw) To: ALT Linux sysadmin discuss В сообщении от Monday 22 October 2007 15:38:30 Andrew Kornilov написал(а): > Peter V. Saveliev wrote: > > ЗЫ: но имхо -- всё это порядочный изврат. > > Да, в том-то и дело. Можно, конечно, взять пяток каких-то наиболее > распространенных случаев (циклы, условия) и для них что-то нарисовать. > Но всегда найдется тот, кто захочет шестой случай. > Попробую подумать, может все-таки получится легко сделать обычный shell > скрестить до конца. В принципе, оно и сейчас можно...Но делать ЯВУ > типа firehall не хочется, их и так достаточно. <skip /> В смысле - сделать обычный шелл? Децл раскрой тему, если не сложно. -- Peter V. Saveliev ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Sysadmins] использование конструкций циклов в правилах firewall в etcnet 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 0 siblings, 2 replies; 14+ messages in thread From: Andrew Kornilov @ 2007-10-22 22:20 UTC (permalink / raw) To: ALT Linux sysadmin discuss Peter V. Saveliev wrote: >> Да, в том-то и дело. Можно, конечно, взять пяток каких-то наиболее >> распространенных случаев (циклы, условия) и для них что-то нарисовать. >> Но всегда найдется тот, кто захочет шестой случай. >> Попробую подумать, может все-таки получится легко сделать обычный shell >> скрестить до конца. В принципе, оно и сейчас можно...Но делать ЯВУ >> типа firehall не хочется, их и так достаточно. > <skip /> > > В смысле - сделать обычный шелл? Децл раскрой тему, если не сложно. Ну в смысле, что варианта есть два: 1. сделать поддержку shell syntax, то есть просто парсить это все самим bash-ем и как-то обрабатывать; то есть, прямо вот так и писать: for IP in $IP_LIST; do $IPTABLES -mtcp -ptcp -s $IP -j ACCEPT (или allow tcp from $IP) done 2. сделать некую поддержку неких примитивов типа того, что ты сделал, когда токены раскрываются в набор команд или еще что-то подобное p.s. Пока писал пункт номер один, понял, что я с шеллом не пересекаюсь вроде как по зарезервированным словам. Гм...можно просто запускать это как набор команд в памяти, прямо bash-ем. И обратная совместимость есть. Точно, так и сделаю, наверное :) Просто до этого читал построчно файл, обрабатывал sed-ом синтаксис, если надо, и отдавал iptables-у на съедение. А можно ведь весь файл сразу обработать и запустить через bash, оно и быстрее и весь shell syntax поддерживается в таком случае. Мда...чего ж я раньше не сообразил ;-) ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Sysadmins] использование конструкций циклов в правилах firewall в etcnet 2007-10-22 22:20 ` Andrew Kornilov @ 2007-10-22 22:44 ` Andrew Kornilov 2007-10-23 13:29 ` Serge 1 sibling, 0 replies; 14+ messages in thread From: Andrew Kornilov @ 2007-10-22 22:44 UTC (permalink / raw) To: ALT Linux sysadmin discuss Andrew Kornilov wrote: > > p.s. Пока писал пункт номер один, понял, что я с шеллом не пересекаюсь вроде как по > зарезервированным словам. Гм...можно просто запускать это как набор команд > в памяти, прямо bash-ем. И обратная совместимость есть. Точно, так и сделаю, > наверное :) Просто до этого читал построчно файл, обрабатывал sed-ом синтаксис, > если надо, и отдавал iptables-у на съедение. А можно ведь весь файл сразу обработать > и запустить через bash, оно и быстрее и весь shell syntax поддерживается в таком > случае. Мда...чего ж я раньше не сообразил ;-) Хотя...все равно получается масса граблей, например, придется заставлять пользователя всегда писать $IPTABLES, имя таблицы и цепочки для применения правила, я просто не смогу найти во всем коде опции именно для iptables, чтобы сделать это автоматически, как сейчас. В общем, ладно, пока оставлю эту затею. ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Sysadmins] использование конструкций циклов в правилах firewall в etcnet 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 1 sibling, 1 reply; 14+ messages in thread From: Serge @ 2007-10-23 13:29 UTC (permalink / raw) To: ALT Linux sysadmin discuss В сообщении от Tuesday 23 October 2007 01:20:42 Andrew Kornilov написал(а): > Peter V. Saveliev wrote: > >> Да, в том-то и дело. Можно, конечно, взять пяток каких-то наиболее > >> распространенных случаев (циклы, условия) и для них что-то нарисовать. > >> Но всегда найдется тот, кто захочет шестой случай. > >> Попробую подумать, может все-таки получится легко сделать обычный shell > >> скрестить до конца. В принципе, оно и сейчас можно...Но делать ЯВУ > >> типа firehall не хочется, их и так достаточно. > > > > <skip /> > > > > В смысле - сделать обычный шелл? Децл раскрой тему, если не сложно. > > Ну в смысле, что варианта есть два: > 1. сделать поддержку shell syntax, то есть просто парсить это все самим > bash-ем и как-то обрабатывать; то есть, прямо вот так и писать: > for IP in $IP_LIST; do > $IPTABLES -mtcp -ptcp -s $IP -j ACCEPT (или allow tcp from $IP) > done если б можно реализовать именно этот вариант... ^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: [Sysadmins] использование конструкций циклов в правилах firewall в etcnet 2007-10-23 13:29 ` Serge @ 2007-10-23 20:35 ` Andrew Kornilov 0 siblings, 0 replies; 14+ messages in thread From: Andrew Kornilov @ 2007-10-23 20:35 UTC (permalink / raw) To: ALT Linux sysadmin discuss Serge wrote: >> Ну в смысле, что варианта есть два: >> 1. сделать поддержку shell syntax, то есть просто парсить это все самим >> bash-ем и как-то обрабатывать; то есть, прямо вот так и писать: >> for IP in $IP_LIST; do >> $IPTABLES -mtcp -ptcp -s $IP -j ACCEPT (или allow tcp from $IP) >> done > если б можно реализовать именно этот вариант... Ну если очень нужно, то это можно написать в одну строку, я уже показывал выше. С выводом в /dev/null. Но придется использовать переменные $IPTABLES, $TABLE, $CHAIN, автоматом они не подставяться, потому как без поллитры команды именно для iptables не выцепишь. Можно, в принципе, и функции из functions-fw использовать. ^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2007-10-23 20:35 UTC | newest] Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2007-10-21 16:29 [Sysadmins] использование конструкций циклов в правилах firewall в etcnet 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 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
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