Титла: Perl script за blacklist за squid ПРОБЛЕМ! Публикувано от: mishot в Jun 25, 2010, 17:39 следния скрип има проблем при стартиране.
http://djusitades.com/pic/script.txt В ръководството (porn.pl --help)се казва, на ред 13 my $restartcommand = "kill -HUP `cat /var/run/squid.pid`"; да се промени на: my $restartcommand = "kill -HUP ‘cat /var/run/squid.pid‘"; ако изпълня командата kill в конзола работи, но ако изпълня скрипта дава: kill: can't find process "‘cat" kill: can't find process "/var/run/squid.pid‘" или ако сложа `(до бутон 1, над TAB) Error while executing restartcomand: Неподходящ ioctl за устройството at /usr/local/bin/porn.pl line 322. 322 ред е system("$restartcommand") or die ("Error while executing restartcomand: $!"); идея защо не работи Титла: Re: Perl script за blacklist за squid ПРОБЛЕМ! Публикувано от: laskov в Jun 25, 2010, 21:41 Щото кавичката преди cat не е тази, която трябва да е.
Титла: Re: Perl script за blacklist за squid ПРОБЛЕМ! Публикувано от: mishot в Jun 26, 2010, 13:11 Щото кавичката преди cat не е тази, която трябва да е. Би ли изписал реда правилно, защото опитах няколко комбинации и не се получава! Благодаря предварително! Титла: Re: Perl script за blacklist за squid ПРОБЛЕМ! Публикувано от: SoulSeller в Jun 26, 2010, 15:45 Код: my $restartcommand = "kill -HUP `cat /var/run/squid.pid`"; Титла: Re: Perl script за blacklist за squid ПРОБЛЕМ! Публикувано от: dejuren в Jun 26, 2010, 18:47 Може да го заместиш и с: Код: my $restartcommand = "kill -HUP $(cat /var/run/squid.pid)" Титла: Re: Perl script за blacklist за squid ПРОБЛЕМ! Публикувано от: mishot в Jun 28, 2010, 15:15 с това:
my $restartcommand = "kill -HUP `cat /var/run/squid.pid`"; дава: Error while executing restartcomand: Неподходящ ioctl за устройството at /usr/local/bin/porn.pl line 322. с това: my $restartcommand = "kill -HUP $(cat /var/run/squid.pid)" дава: syntax error at /usr/local/bin/porn.pl line 14, near "my " BEGIN not safe after errors--compilation aborted at /usr/local/bin/porn.pl line 16. Титла: Re: Perl script за blacklist за squid ПРОБЛЕМ! Публикувано от: neter в Jun 28, 2010, 15:36 Малко встрани от обсъждането досега - защо трепеш процеса на squid по този начин? Нямаш ли init скрипт, с който да пускаш/спираш/рестартираш squid? И, ако нямаш, защо не се снабдиш с такъв? Пак ли с такива директни убивания си спираш и рестартираш процесите в системата?
Иначе, както се вижда от грешките в последния ти пост, редът, за който става дума тук, явно го слагаш на ред 14 от файла. Познах по втората грешка - там си изпуснал да сложиш точка и запетая в края на реда и затова дава грешка. При първата грешка от последния ти пост става дума за друг ред - 322. Какво има там? Понеже в този случай настоящият 14-ти ред от файла е изписан добре. Титла: Re: Perl script за blacklist за squid ПРОБЛЕМ! Публикувано от: gat3way в Jun 28, 2010, 15:54 Не го слагай в двойни, а в единични скоби, защото така променливата се eval-ва от perl интерпретатора, а не от bash шела.
Що се отнася до убиването, това не е точно убиване, просто squid прихваща SIGHUP и при получаване на този сигнал, препрочита конфигурацията си. Не че не може да се ползва инитскрипта, но това е същото. Единственият проблем би станал ако демона умре и PID файла продължи да си стои там. Титла: Re: Perl script за blacklist за squid ПРОБЛЕМ! Публикувано от: mishot в Jun 28, 2010, 16:26 като сложих ; накрая:
my $restartcommand = "kill -HUP $(cat /var/run/squid.pid)"; дава: sh: -c: line 0: syntax error near unexpected token `)' sh: -c: line 0: `kill -HUP 0 10 6 4 3 2 1 0cat /var/run/squid.pid)' @gat3way какво значи двойни/единични скоби? @neter ползвам готов скрип, затова така го убивам Титла: Re: Perl script за blacklist за squid ПРОБЛЕМ! Публикувано от: gat3way в Jun 28, 2010, 16:28 значи вместо:
"kill -HUP $(cat /var/run/squid.pid)" да ползваш: 'kill -HUP $(cat /var/run/squid.pid)' Титла: Re: Perl script за blacklist за squid ПРОБЛЕМ! Публикувано от: mishot в Jun 28, 2010, 16:39 значи вместо: единични/двойни кавички(не скоби) резултата е Error while executing restartcomand: Неподходящ ioctl за устройството at /usr/local/bin/porn.pl line 324. 324 ред гласи: system("$restartcommand") or die ("Error while executing restartcomand: $!"); edit: това е целия скрипт http://djusitades.com/pic/script.txt Титла: Re: Perl script за blacklist за squid ПРОБЛЕМ! Публикувано от: neter в Jun 28, 2010, 18:37 Друго е, когато покажеш нужните редове :) Остави реда така, както е в момента. Т.е.:
Код Командата се изпълнява, а грешката ти я изкарва поради неправилно използване на die() със system(). За разлика от вътрешните процедури на Perl, при system() трябва да проверяваш стойността на върнатия изход от bash командата и по тази стойност да съдиш дали да се изпълни die(). Т.е., трябва да бъде: Код При което, ако стойността на върнатия изход е различна от 0, ще се изпълни die(). Стойност 1 означава минорна грешка, а стойност 2 означава критична грешка. Тъй като не си въвел нужната проверка, условието за неизпълнение на die() никога не е било удовлетворено, въпреки че командата ти се е изпълнявала, се е изпълнявал и die() и скриптът е умирал до този ред ;) Титла: Re: Perl script за blacklist за squid ПРОБЛЕМ! Публикувано от: mishot в Jun 29, 2010, 12:12 Хиляди благодарности!
Сега скрипта работи [_]3 Благодаря на всички за помощта! Хубаво е, че ви има! |