Erastik 0 Posted 2007-10-20 19:23:36 Share Posted 2007-10-20 19:23:36 Добрый день! Помогите пожалуйста разобраться, надо что бы скрипт на perl заносил в ipfw правила по ограничению скорости.. Сейчас это выглядит так: system("/sbin/ipfw pipe 40001 config bw 64Kbits/s queue 20 >/dev/null mask dst-ip 0xffffffff"); # скорость на прием system("/sbin/ipfw pipe 40002 config bw 64Kbits/s queue 20 mask src-ip 0xffffffff"); # скорость на отдачу system("/sbin/ipfw add 40001 pipe 40001 ip from 10.0.0.2 to any in >/dev/null"); system("/sbin/ipfw add 40001 pipe 40002 ip from any to 10.0.0.2 out >/dev/null"); Вроде как оно все нормально добавляет.. ipfw show: 40001 0 0 pipe 40001 ip from 10.0.0.2 to any in 40001 0 0 pipe 40002 ip from any to 10.0.0.2 out ipfw pipe show: 40001: 64.000 Kbit/s 0 ms 20 sl. 0 queues (64 buckets) droptail 40002: 64.000 Kbit/s 0 ms 20 sl. 0 queues (64 buckets) droptail Но правила почему то не работают.. При чем если я их добавляю в файл с правилами или забиваю вручную то все отменно работает. Не подскажет что это может быть? Link to post Share on other sites
Dragon 13 Posted 2007-10-20 19:30:26 Share Posted 2007-10-20 19:30:26 system("/sbin/ipfw pipe 40001 config bw 64Kbits/s queue 20 >/dev/null mask dst-ip 0xffffffff"); # скорость на прием Что это? Ты перепутал in, out местами в правилах и чего 2 правила с одном номером? Пожалуй так будет правильно... system("/sbin/ipfw pipe 40001 config bw 64Kbits/s queue 20 mask src-ip 0xffffffff >/dev/null"); system("/sbin/ipfw pipe 40002 config bw 64Kbits/s queue 20 mask dst-ip 0xffffffff >/dev/null"); system("/sbin/ipfw add 40001 pipe 40001 ip from 10.0.0.2 to any in >/dev/null"); system("/sbin/ipfw add 40002 pipe 40002 ip from any to 10.0.0.2 out >/dev/null"); Link to post Share on other sites
Erastik 0 Posted 2007-10-20 21:16:15 Author Share Posted 2007-10-20 21:16:15 system("/sbin/ipfw pipe 40001 config bw 64Kbits/s queue 20 >/dev/null mask dst-ip 0xffffffff"); # скорость на прием Что это? Ты перепутал in, out местами в правилах и чего 2 правила с одном номером? Пожалуй так будет правильно... system("/sbin/ipfw pipe 40001 config bw 64Kbits/s queue 20 mask src-ip 0xffffffff >/dev/null"); system("/sbin/ipfw pipe 40002 config bw 64Kbits/s queue 20 mask dst-ip 0xffffffff >/dev/null"); system("/sbin/ipfw add 40001 pipe 40001 ip from 10.0.0.2 to any in >/dev/null"); system("/sbin/ipfw add 40002 pipe 40002 ip from any to 10.0.0.2 out >/dev/null"); Без толку.. Link to post Share on other sites
Erastik 0 Posted 2007-10-20 21:22:37 Author Share Posted 2007-10-20 21:22:37 Я же говрю что ввожу все руками и все нормально работает... Link to post Share on other sites
J.McKey 0 Posted 2007-10-21 07:30:28 Share Posted 2007-10-21 07:30:28 Я же говрю что ввожу все руками и все нормально работает... можно заменить system -> exec Link to post Share on other sites
Колян 2 Posted 2007-10-21 08:08:47 Share Posted 2007-10-21 08:08:47 А чем пхп не уходил? Link to post Share on other sites
Erastik 0 Posted 2007-10-21 16:22:10 Author Share Posted 2007-10-21 16:22:10 А чем пхп не уходил? Пхп угодил.. Но в общем нужно только на перле и ничего с этим сделать нильзя. Link to post Share on other sites
Dragon 13 Posted 2007-10-21 17:18:18 Share Posted 2007-10-21 17:18:18 Я же говрю что ввожу все руками и все нормально работает... Ну это вопрос не много меняет А что в access логах Апача при этом??? Link to post Share on other sites
J.McKey 0 Posted 2007-10-21 19:27:05 Share Posted 2007-10-21 19:27:05 Я же говрю что ввожу все руками и все нормально работает... Ну это вопрос не много меняет А что в access логах Апача при этом??? не похоже что апач участвует здесь... Link to post Share on other sites
vlad5503 1 Posted 2017-06-22 07:56:02 Share Posted 2017-06-22 07:56:02 Добрый день! Помогите пожалуйста разобраться, надо что бы скрипт на perl заносил в ipfw правила по ограничению скорости.. Сейчас это выглядит так: system("/sbin/ipfw pipe 40001 config bw 64Kbits/s queue 20 >/dev/null mask dst-ip 0xffffffff"); # скорость на прием system("/sbin/ipfw pipe 40002 config bw 64Kbits/s queue 20 mask src-ip 0xffffffff"); # скорость на отдачу system("/sbin/ipfw add 40001 pipe 40001 ip from 10.0.0.2 to any in >/dev/null"); system("/sbin/ipfw add 40001 pipe 40002 ip from any to 10.0.0.2 out >/dev/null"); Вот и мне понадобилось из перл скрипта, что получает сведения от другого сервера данных, прописывать такое: /sbin/ipfw table 2 add 192.168.30.0/24 ну или просто Ip клиента. И соответственно чтоб мог удалять. И вот бьюсь и не получается. Даже локально запускаю скрипт и он не пишет в таблицу(не создает). Подставляю другие команды, например записать в файл сведения что получил скрипт, дату и прочее - пишет. Подскажите, что не так сделал... Сам скрипт вот такой: # cat on.pl #!/usr/local/bin/perl print ("Content-type: text/html\n\n"); #print '<?xml version="1.0" encoding="windows-1251"?>'; #print("OK"); use strict; use CGI ':standard'; my $date = localtime; my $log = "/usr/scripts/on.log"; my $key = param('key'); my $kod = param('kod'); my $metka = 0; my $IP = param('id'); if ($key eq "euflfk") { if ($kod eq "vsem") { if ($IP eq "my_ip") { if (open(LOG, ">>$log")) { print LOG "$date"."_"."OPEN"."_"."$IP"."_"."$kod"."\n"; close(LOG); #print("OK-2"."\n"); exec("/sbin/ipfw table 22 add 192.168.30.0/24 >/dev/null"); } } } } #print("OK-3"."\n"); exit 0; Link to post Share on other sites
andryas 1,062 Posted 2017-06-22 09:15:31 Share Posted 2017-06-22 09:15:31 (edited) Когда-то, в молодости, делал так: $fwcmd = "/sbin/ipfw table " . $TABLE_N . " add $IP"; `$fwcmd`; Edited 2017-06-22 09:15:45 by andryas Link to post Share on other sites
vlad5503 1 Posted 2017-06-22 09:46:59 Share Posted 2017-06-22 09:46:59 Когда-то, в молодости, делал так: $fwcmd = "/sbin/ipfw table " . $TABLE_N . " add $IP"; `$fwcmd`; Точно также отрабатывает Ваш вариант.... Не создал он строку в таблице. А в логах апача это: [Thu Jun 22 16:41:15.424213 2017] [cgi:error] [pid 3074] [client 10.10.10.2:4589] AH01215: ipfw: : /usr/local/www/apache24/cgi-bin/on.pl [Thu Jun 22 16:41:15.424511 2017] [cgi:error] [pid 3074] [client 10.10.10.2:4589] AH01215: socket: /usr/local/www/apache24/cgi-bin/on.pl [Thu Jun 22 16:41:15.424575 2017] [cgi:error] [pid 3074] [client 10.10.10.2:4589] AH01215: : : /usr/local/www/apache24/cgi-bin/on.pl [Thu Jun 22 16:41:15.443656 2017] [cgi:error] [pid 3074] [client 10.10.10.2:4589] AH01215: Operation not permitted: /usr/local/www/apache24/cgi-bin/on.pl [Thu Jun 22 16:41:15.450744 2017] [cgi:error] [pid 3074] [client 10.10.10.2:4589] AH01215: ipfw: : /usr/local/www/apache24/cgi-bin/on.pl [Thu Jun 22 16:41:15.450846 2017] [cgi:error] [pid 3074] [client 10.10.10.2:4589] AH01215: socket: /usr/local/www/apache24/cgi-bin/on.pl [Thu Jun 22 16:41:15.450905 2017] [cgi:error] [pid 3074] [client 10.10.10.2:4589] AH01215: : : /usr/local/www/apache24/cgi-bin/on.pl [Thu Jun 22 16:41:15.451193 2017] [cgi:error] [pid 3074] [client 10.10.10.2:4589] AH01215: Operation not permitted: /usr/local/www/apache24/cgi-bin/on.pl Link to post Share on other sites
mixtery 123 Posted 2017-06-22 09:52:24 Share Posted 2017-06-22 09:52:24 Фигассе, апачу можно добираться к ipfw? Крутотень!Права проверьте. Link to post Share on other sites
andryas 1,062 Posted 2017-06-22 09:55:22 Share Posted 2017-06-22 09:55:22 Operation not permitted: Напрямую с апача и не будет прав, и это хорошо. Работайте через СУБД либо через временный файл. Link to post Share on other sites
vlad5503 1 Posted 2017-06-22 10:06:44 Share Posted 2017-06-22 10:06:44 Вот и пошел путем через временный файл плюс крон для шеловского скрипта.... А вот rscriptd от stargazera работает напрямую...но Очень уж мало передаваемых параметров. Link to post Share on other sites
andryas 1,062 Posted 2017-06-22 11:10:11 Share Posted 2017-06-22 11:10:11 Не, ну можно поставить права и делать su, но это неправильно, ИМХО. Как работает stargazer я не изучал. Link to post Share on other sites
nightfly 1,252 Posted 2017-06-22 11:28:21 Share Posted 2017-06-22 11:28:21 А вот rscriptd от stargazera работает напрямую...но Очень уж мало передаваемых параметров. sudo осильте что-ли. Link to post Share on other sites
pppoetest 0 Posted 2017-06-22 15:09:08 Share Posted 2017-06-22 15:09:08 Operation not permitted: chmod +x и убедитесь что юзеру от которого запускается скрипт разрешён запуск /sbin/ipfw Link to post Share on other sites
pashaumka 35 Posted 2017-06-24 18:25:54 Share Posted 2017-06-24 18:25:54 ваш скрипт стартует с правами рута или в группе рута? Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now