Linux-BG
Начало
Помощ
Търси
Календар
Вход
Регистрирай
Добре дошъл/дошла,
Гост
. Моля,
въведи своето потребителско име
или
се регистрирай
.
Влез с потребителско име, парола и продължителност на сесията
Linux за българи: Форуми
>
Linux секция за начинаещи
>
Настройка на програми
>
Грешка в скрипт
Страници: [
1
]
Надолу
« назад
напред »
Изпечатай
Автор
Тема: Грешка в скрипт (Прочетена 1496 пъти)
KPETEH
Напреднали
Публикации: 584
Грешка в скрипт
«
-:
Feb 21, 2007, 19:38 »
Ето го и скрипта,който съм преработил за slackware:
Примерен код
#!/usr/bin/perl -w
use Sys::Syslog;
$max=10; # maximum permited atempts
$watchfile= '/var/log/messages';
$iptables= '/usr/sbin/iptables';
$iptables_save= '/usr/sbin/iptables-save';
$iptables_restore= '/usr/sbin/iptables-restore';
$cfgfile= '/etc/ipkungfu/custom.conf';
open(LFILE, "<$watchfile");
%tries=(); # number of attempts per ip
%blocked=(); # already blocked ip's
# restore iptables configuration
`$iptables_restore < $cfgfile`;
# load currently blocked ips from iptable list
open(IPTPIPE, "$iptables -L -v -n|");
$blockChain=0;
while (<IPTPIPE>){
$blockChain=1 if (/^Chain block \(\d+ references\)$/);
next unless $blockChain;
last if (/^$/ );
$blocked{$1}=1 if (/(\d+\.\d+\.\d+\.\d+)/);
}
close IPTPIPE;
$blk_ips=join(", ",keys(%blocked));
syslog('warning',"sshwatch.pl started. currently blocked ip's are: $blk_ips");
# watch the messages file
while (1) {
for ($curpos = tell(LFILE); $_ = <LFILE>; $curpos = tell(LFILE)) {
if (/sshd\[\d+\]: Failed password for .+ from \D+(\d+\.\d+\.\d+\.\d+)/) {
$ip=$1;
next if defined($blocked{$ip});
$tries{$ip}+=1;
if ($tries{$ip} eq $max){
`$iptables -I block -s $ip -j DROP; $iptables_save > $cfgfile`;
$blocked{$ip}=1;
syslog('warning', "IP $ip has been blocked !");
}
}
}
sleep 1;
seek(LFILE, $curpos, 0);
}
След изпълнение на командата
# perl sshwatch.pl
iptables-restore: line 20 failed
не мога да разбера къде е грешката при положение че
съществува /usr/sbin/iptables-restore ?
Активен
Най-добрата страна на алчността е способността и да стопява коефициента на интелигентност дори на най-умния човек.
PERMANENT
Напреднали
Публикации: 94
Грешка в скрипт
«
Отговор #1 -:
Feb 21, 2007, 20:05 »
аз съм със slackware и като изпълня iptables-restore програмата си свършва работата но не се затвяря просто си седи така.Виж как при теб стоят нещата
Активен
neter
Global Moderator
Напреднали
Публикации: 3408
Distribution: Debian, SailfishOS, CentOS
Window Manager: LXDE, Lipstick
Грешка в скрипт
«
Отговор #2 -:
Feb 21, 2007, 20:14 »
А я пробвай да замениш
`$iptables_restore < $cfgfile`;
с
printf FILE_OUT "$iptables_restore < $cfgfile \n";
и
`$iptables -I block -s $ip -j DROP; $iptables_save > $cfgfile`;
с
printf FILE_OUT "$iptables -I block -s $ip -j DROP \n";
printf FILE_OUT "$iptables_save > $cfgfile \n";
да видим какво ще стане.
edit: Възможно е и PERMANENT да е прав. Да се наложи в скрипта да зададеш край на изпълнението.
Активен
"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти
KPETEH
Напреднали
Публикации: 584
Грешка в скрипт
«
Отговор #3 -:
Feb 21, 2007, 20:24 »
Това че така си стои е ясно но идеята е че ми дава грешката :
iptables-restore: line 20 failed
Активен
Най-добрата страна на алчността е способността и да стопява коефициента на интелигентност дори на най-умния човек.
KPETEH
Напреднали
Публикации: 584
Грешка в скрипт
«
Отговор #4 -:
Feb 21, 2007, 20:31 »
Замених ги както ми каза и се получава грешка
printf() on unopened filehandle FILE_OUT at sshwatch.pl line 18.
Активен
Най-добрата страна на алчността е способността и да стопява коефициента на интелигентност дори на най-умния човек.
PERMANENT
Напреднали
Публикации: 94
Грешка в скрипт
«
Отговор #5 -:
Feb 21, 2007, 21:17 »
printf не преобразува ли подадените му числа в различни броини системи
пример
printf "%x",10 което изписва a тоест 0xa
edit
сетих се че при php-то ставаше нещо подобно.просто там като не може да се изпълни някаква операция за определено време(дефалта беше 30 секунди) изкарваше едно хубаво ерорче а до колкото съм чувал php-то и perl-а си приличат в доста отношения
Активен
KPETEH
Напреднали
Публикации: 584
Грешка в скрипт
«
Отговор #6 -:
Feb 21, 2007, 21:34 »
Добре не знам аз този скрипт съм го взел от оригиналния
и нищо не разбирам от perl,хайде някой с различна дистрибуция от slackware да пробва дали ще работи,но естествено с променени пътища за iptables.
Активен
Най-добрата страна на алчността е способността и да стопява коефициента на интелигентност дори на най-умния човек.
neter
Global Moderator
Напреднали
Публикации: 3408
Distribution: Debian, SailfishOS, CentOS
Window Manager: LXDE, Lipstick
Грешка в скрипт
«
Отговор #7 -:
Feb 21, 2007, 21:35 »
Съжалявам, разсеях се и пиша глупости. printf се използва за извеждане на текст. Както echo в bash например. Сега ще разгледам нещата по-спокойно и, ако стигна до отговор, ще го постна тук.
Активен
"Да си добре приспособен към болно общество не е признак за добро здраве" - Джиду Кришнамурти
Страници: [
1
]
Нагоре
Изпечатай
« назад
напред »