Автор Тема: Perl script за blacklist за squid ПРОБЛЕМ!  (Прочетена 3940 пъти)

mishot

  • Напреднали
  • *****
  • Публикации: 191
  • Distribution: Fedora 16
  • Window Manager: Gnome-Shell
    • Профил
следния скрип има проблем при стартиране.
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: $!");

идея защо не работи
« Последна редакция: Jun 28, 2010, 16:44 от mishot »
Активен

laskov

  • Напреднали
  • *****
  • Публикации: 3166
    • Профил
Re: Perl script за blacklist за squid ПРОБЛЕМ!
« Отговор #1 -: Jun 25, 2010, 21:41 »
Щото кавичката преди cat не е тази, която трябва да е.
Активен

Не си мислете, че понеже Вие мислите правилно, всички мислят като Вас! Затова, когато има избори, идете и гласувайте, за да не сте изненадани после от резултата, и за да не твърди всяка партия, че тя е спечелила, а Б.Б. (С.С., ...) е загубил, а трети да управлява.  Наздраве!  [_]3

mishot

  • Напреднали
  • *****
  • Публикации: 191
  • Distribution: Fedora 16
  • Window Manager: Gnome-Shell
    • Профил
Re: Perl script за blacklist за squid ПРОБЛЕМ!
« Отговор #2 -: Jun 26, 2010, 13:11 »
Щото кавичката преди cat не е тази, която трябва да е.

Би ли изписал реда правилно, защото опитах няколко комбинации и не се получава!
Благодаря предварително!
Активен

SoulSeller

  • Участници
  • ***
  • Публикации: 8
    • Профил
Re: Perl script за blacklist за squid ПРОБЛЕМ!
« Отговор #3 -: Jun 26, 2010, 15:45 »
Код:
my $restartcommand = "kill -HUP `cat /var/run/squid.pid`";
Активен

dejuren

  • Напреднали
  • *****
  • Публикации: 1025
  • Distribution: Ubuntu, RedHat
  • Window Manager: lxde KDE4
    • Профил
Re: Perl script за blacklist за squid ПРОБЛЕМ!
« Отговор #4 -: Jun 26, 2010, 18:47 »
Код:
my $restartcommand = "kill -HUP `cat /var/run/squid.pid`";
Може да го заместиш и с:
Код:
my $restartcommand = "kill -HUP $(cat /var/run/squid.pid)"
Активен

http://webchat.freenode.net/?channels=ubuntu-bg
The quieter you become, the more you are able to hear.
Две седмици цъкане с мишката спестяват два часа четене на документацията.

mishot

  • Напреднали
  • *****
  • Публикации: 191
  • Distribution: Fedora 16
  • Window Manager: Gnome-Shell
    • Профил
Re: Perl script за blacklist за squid ПРОБЛЕМ!
« Отговор #5 -: 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.
Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Perl script за blacklist за squid ПРОБЛЕМ!
« Отговор #6 -: Jun 28, 2010, 15:36 »
Малко встрани от обсъждането досега - защо трепеш процеса на squid по този начин? Нямаш ли init скрипт, с който да пускаш/спираш/рестартираш squid? И, ако нямаш, защо не се снабдиш с такъв? Пак ли с такива директни убивания си спираш и рестартираш процесите в системата?

Иначе, както се вижда от грешките в последния ти пост, редът, за който става дума тук, явно го слагаш на ред 14 от файла. Познах по втората грешка - там си изпуснал да сложиш точка и запетая в края на реда и затова дава грешка. При първата грешка от последния ти пост става дума за друг ред - 322. Какво има там? Понеже в този случай настоящият 14-ти ред от файла е изписан добре.
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Perl script за blacklist за squid ПРОБЛЕМ!
« Отговор #7 -: Jun 28, 2010, 15:54 »
Не го слагай в двойни, а в единични скоби, защото така променливата се eval-ва от perl интерпретатора, а не от bash шела.

Що се отнася до убиването, това не е точно убиване, просто squid прихваща SIGHUP и при получаване на този сигнал, препрочита конфигурацията си. Не че не може да се ползва инитскрипта, но това е същото. Единственият проблем би станал ако демона умре и PID файла продължи да си стои там.
Активен

"Knowledge is power" - France is Bacon

mishot

  • Напреднали
  • *****
  • Публикации: 191
  • Distribution: Fedora 16
  • Window Manager: Gnome-Shell
    • Профил
Re: Perl script за blacklist за squid ПРОБЛЕМ!
« Отговор #8 -: 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
ползвам готов скрип, затова така го убивам
Активен

gat3way

  • Напреднали
  • *****
  • Публикации: 6050
  • Relentless troll
    • Профил
    • WWW
Re: Perl script за blacklist за squid ПРОБЛЕМ!
« Отговор #9 -: Jun 28, 2010, 16:28 »
значи вместо:

"kill -HUP $(cat /var/run/squid.pid)"

да ползваш:

'kill -HUP $(cat /var/run/squid.pid)'
Активен

"Knowledge is power" - France is Bacon

mishot

  • Напреднали
  • *****
  • Публикации: 191
  • Distribution: Fedora 16
  • Window Manager: Gnome-Shell
    • Профил
Re: Perl script за blacklist за squid ПРОБЛЕМ!
« Отговор #10 -: Jun 28, 2010, 16:39 »
значи вместо:

"kill -HUP $(cat /var/run/squid.pid)"

да ползваш:

'kill -HUP $(cat /var/run/squid.pid)'


единични/двойни кавички(не скоби)
резултата е
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
« Последна редакция: Jun 28, 2010, 16:44 от mishot »
Активен

neter

  • Global Moderator
  • Напреднали
  • *****
  • Публикации: 3408
  • Distribution: Debian, SailfishOS, CentOS
  • Window Manager: LXDE, Lipstick
    • Профил
    • WWW
Re: Perl script за blacklist за squid ПРОБЛЕМ!
« Отговор #11 -: Jun 28, 2010, 18:37 »
Друго е, когато покажеш нужните редове :) Остави реда така, както е в момента. Т.е.:
Код
GeSHi (Perl):
  1. my $restartcommand = "kill -HUP `cat /var/run/squid.pid`";
Командата се изпълнява, а грешката ти я изкарва поради неправилно използване на die() със system(). За разлика от вътрешните процедури на Perl, при system() трябва да проверяваш стойността на върнатия изход от bash командата и по тази стойност да съдиш дали да се изпълни die(). Т.е., трябва да бъде:
Код
GeSHi (Perl):
  1. system("$restartcommand") == 0 or die ("Error while executing restartcomand: $!");
При което, ако стойността на върнатия изход е различна от 0, ще се изпълни die(). Стойност 1 означава минорна грешка, а стойност 2 означава критична грешка. Тъй като не си въвел нужната проверка, условието за неизпълнение на die() никога не е било удовлетворено, въпреки че командата ти се е изпълнявала, се е изпълнявал и die() и скриптът е умирал до този ред ;)
Активен

"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти

mishot

  • Напреднали
  • *****
  • Публикации: 191
  • Distribution: Fedora 16
  • Window Manager: Gnome-Shell
    • Профил
Re: Perl script за blacklist за squid ПРОБЛЕМ!
« Отговор #12 -: Jun 29, 2010, 12:12 »
Хиляди благодарности!
Сега скрипта работи  [_]3


Благодаря на всички за помощта!
Хубаво е, че ви има!
Активен

Подобни теми
Заглавие Започната от Отговора Прегледи Последна публикация
Blacklist за Destination адреси
Хардуерни и софтуерни проблеми
Topper 6 2886 Последна публикация Apr 29, 2005, 12:13
от Topper
Perl script
Настройка на програми
skuller 6 2533 Последна публикация Jan 25, 2007, 22:54
от zeridon
Perl download script и status bar
Общ форум
Gaara 8 3863 Последна публикация May 24, 2007, 13:42
от Gaara
Perl и "Can't access() script" грешка
Настройка на програми
Arvigeus 4 2794 Последна публикация Mar 14, 2010, 14:59
от Arvigeus
perl script date-time
Общ форум
dvbb 3 2421 Последна публикация Apr 01, 2010, 18:35
от dvbb