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