Страница 1 из 1
Передача пераметров SHELL->PERl
Добавлено: 2009-04-28 6:31:22
sofinan
Здрасти, тут такая задача возникла, запустить perl скрипт из shell скрипта и передать ему переменную в данном случае IFACE.
Сам скрипт
Код: Выделить всё
#!/bin/sh
IPACCTCTL="/usr/local/sbin/ipacctctl"
IFACE=$1
$IPACCTCTL ${IFACE}_ip_acct:$IFACE checkpoint
$IPACCTCTL ${IFACE}_ip_acct:$IFACE show | /root/diplom/try2.pl $IFACE
$IPACCTCTL ${IFACE}_ip_acct:$IFACE clear
Код: Выделить всё
Can't open rl0: No such file or directory at /root/diplom/try2.pl line 21.
Can't open vr0: No such file or directory at /root/diplom/try2.pl line 21.
В чем ошибка не пойму, вроде все правильно...Али нет?)))Подскажите плиз)
Re: Передача пераметров SHELL->PERl
Добавлено: 2009-04-28 6:39:59
zg
sofinan писал(а):В чем ошибка не пойму, вроде все правильно
если всё правильно, то должно работать
sofinan писал(а):Али нет?)))Подскажите плиз)
гм.. исходник давай, тут телепатов нет
Re: Передача пераметров SHELL->PERl
Добавлено: 2009-04-28 7:00:00
sofinan
какой именно исходник? Исходник на perl выглядит так
Re: Передача пераметров SHELL->PERl
Добавлено: 2009-04-28 7:13:23
ProFTP
Re: Передача пераметров SHELL->PERl
Добавлено: 2009-04-28 7:26:44
sofinan
)))Нее, дело не в скрипте на perl, дело в том что данные которые порождаются show должны перенаправляться на обработку скрипту на try2.pl с параметром $IFACE, а получается что имя скрипта и параметра интерпретириются как два разных скрипта.
Re: Передача пераметров SHELL->PERl
Добавлено: 2009-04-28 8:12:05
zg
sofinan писал(а):Исходник на perl выглядит так
гм.. кто-то из вас двоих врёт либо ты либо перл
sofinan писал(а):at /root/diplom/try2.pl line 21.
тебя номер строки не смущает?
Re: Передача пераметров SHELL->PERl
Добавлено: 2009-04-28 8:38:55
sofinan
)))Ладно каюсь это был я))))))))))))))))))))) Блин дак значит это все таки ошибка в перл скрипте))))))ZG спасибо за подсказку. Даже не мог подумать что это он ругается(((((
Код: Выделить всё
#!/usr/bin/perl -w
use DBI;
# open(NG,<>) or die "не";
my $table_name=$ARGV[0] ;
print $table_name;
my $dbname='IPPACTDB';
my $user='*******;
my $passwd='******';
my $ip_out="*********";
my $network="192.168.0.";
my $time_stamp;
my $ip_source;
my $port_source;
my $ip_dest;
my $port_dest;
my $num_proto;
my $quantity_pack;
my $quantity_byte;
$dbh=DBI->connect("DBI:Pg:dbname='$dbname'","$user","$passwd") or die \
"Не connect";
while ($line=<>){ #ошибка тут
($ip_source,$port_source,$ip_dest,$port_dest,$num_proto,
$quantity_pack,$quantity_byte,$time_stamp)=split(" ",$line);
# for ($ip_source,$ip_dest){
# s/$network//; s/$ip_out/0/;
# }
# print localtime($time_stamp)."\n";
# print $ip_source."\n";
# print $port_source."\n";
# print $ip_dest."\n";
# print $port_dest."\n";
# print $num_proto."\n";
# print $quantity_pack."\n";
# print $quantity_byte."\n";
$sth=$dbh->prepare("insert into stat (ip_source, port_source, \
ip_dest, port_dest, num_proto, quantity_pack, quantity_byte, \
time_stamp) values('$ip_source','$port_source','$ip_dest', \
'$port_dest','$num_proto','$quantity_pack','$quantity_byte', \
'$time_stamp')");
$sth->execute();
$sth->finish();
}
$dbh->disconnect;
#print "SUCCESS\n";
Как теперь считывать данные? while ($line=<>)- такая тема уже не проканает)
Re: Передача пераметров SHELL->PERl
Добавлено: 2009-04-28 8:41:20
zg
sofinan писал(а):while ($line=<>)- такая тема уже не проканает)
это к
ProFTP, он такой скрипт уже писал
кстати, можешь поискать по форуму подобных скриптов тут уже штук пять.
Re: Передача пераметров SHELL->PERl
Добавлено: 2009-04-28 8:42:50
sofinan
А ну впринципе если сделать так while <STDIN> это работает...Но верно ли это?!)))))
Re: Передача пераметров SHELL->PERl
Добавлено: 2009-04-28 8:45:47
zg
sofinan писал(а):А ну впринципе если сделать так while <STDIN> это работает...Но верно ли это?!)))))
если работает, значит верно. В принципе пойдёт и так.