Erastik Опубликовано: 20 жовтня, 2007 Опубликовано: 20 жовтня, 2007 Добрый день! Помогите пожалуйста разобраться, надо что бы скрипт на 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 Но правила почему то не работают.. При чем если я их добавляю в файл с правилами или забиваю вручную то все отменно работает. Не подскажет что это может быть?
Dragon Опубліковано: 20 жовтня, 2007 Опубліковано: 20 жовтня, 2007 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");
Erastik Опубліковано: 20 жовтня, 2007 Автор Опубліковано: 20 жовтня, 2007 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"); Без толку..
Erastik Опубліковано: 20 жовтня, 2007 Автор Опубліковано: 20 жовтня, 2007 Я же говрю что ввожу все руками и все нормально работает...
J.McKey Опубліковано: 21 жовтня, 2007 Опубліковано: 21 жовтня, 2007 Я же говрю что ввожу все руками и все нормально работает... можно заменить system -> exec
Erastik Опубліковано: 21 жовтня, 2007 Автор Опубліковано: 21 жовтня, 2007 А чем пхп не уходил? Пхп угодил.. Но в общем нужно только на перле и ничего с этим сделать нильзя.
Dragon Опубліковано: 21 жовтня, 2007 Опубліковано: 21 жовтня, 2007 Я же говрю что ввожу все руками и все нормально работает... Ну это вопрос не много меняет А что в access логах Апача при этом???
J.McKey Опубліковано: 21 жовтня, 2007 Опубліковано: 21 жовтня, 2007 Я же говрю что ввожу все руками и все нормально работает... Ну это вопрос не много меняет А что в access логах Апача при этом??? не похоже что апач участвует здесь...
vlad5503 Опубліковано: 22 червня, 2017 Опубліковано: 22 червня, 2017 Добрый день! Помогите пожалуйста разобраться, надо что бы скрипт на 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;
andryas Опубліковано: 22 червня, 2017 Опубліковано: 22 червня, 2017 (відредаговано) Когда-то, в молодости, делал так: $fwcmd = "/sbin/ipfw table " . $TABLE_N . " add $IP"; `$fwcmd`; Відредаговано 22 червня, 2017 andryas
vlad5503 Опубліковано: 22 червня, 2017 Опубліковано: 22 червня, 2017 Когда-то, в молодости, делал так: $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
mixtery Опубліковано: 22 червня, 2017 Опубліковано: 22 червня, 2017 Фигассе, апачу можно добираться к ipfw? Крутотень!Права проверьте.
andryas Опубліковано: 22 червня, 2017 Опубліковано: 22 червня, 2017 Operation not permitted: Напрямую с апача и не будет прав, и это хорошо. Работайте через СУБД либо через временный файл.
vlad5503 Опубліковано: 22 червня, 2017 Опубліковано: 22 червня, 2017 Вот и пошел путем через временный файл плюс крон для шеловского скрипта.... А вот rscriptd от stargazera работает напрямую...но Очень уж мало передаваемых параметров.
andryas Опубліковано: 22 червня, 2017 Опубліковано: 22 червня, 2017 Не, ну можно поставить права и делать su, но это неправильно, ИМХО. Как работает stargazer я не изучал.
nightfly Опубліковано: 22 червня, 2017 Опубліковано: 22 червня, 2017 А вот rscriptd от stargazera работает напрямую...но Очень уж мало передаваемых параметров. sudo осильте что-ли.
pppoetest Опубліковано: 22 червня, 2017 Опубліковано: 22 червня, 2017 Operation not permitted: chmod +x и убедитесь что юзеру от которого запускается скрипт разрешён запуск /sbin/ipfw
pashaumka Опубліковано: 24 червня, 2017 Опубліковано: 24 червня, 2017 ваш скрипт стартует с правами рута или в группе рута?
Рекомендованные сообщения
Создайте аккаунт или войдите в него для комментирования
Вы должны быть пользователем, чтобы оставить комментарий
Создать аккаунт
Зарегистрируйтесь для получения аккаунта. Это просто!
Зарегистрировать аккаунтВхід
Уже зарегистрированы? Войдите здесь.
Войти сейчас