Передача пераметров SHELL->PERl

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
sofinan
мл. сержант
Сообщения: 75
Зарегистрирован: 2008-08-12 9:51:48
Откуда: ОМСК
Контактная информация:

Передача пераметров SHELL->PERl

Непрочитанное сообщение sofinan » 2009-04-28 6:31:22

Здрасти, тут такая задача возникла, запустить 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.
В чем ошибка не пойму, вроде все правильно...Али нет?)))Подскажите плиз)
Кто тут?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Передача пераметров SHELL->PERl

Непрочитанное сообщение zg » 2009-04-28 6:39:59

sofinan писал(а):В чем ошибка не пойму, вроде все правильно
если всё правильно, то должно работать
sofinan писал(а):Али нет?)))Подскажите плиз)
гм.. исходник давай, тут телепатов нет

Аватара пользователя
sofinan
мл. сержант
Сообщения: 75
Зарегистрирован: 2008-08-12 9:51:48
Откуда: ОМСК
Контактная информация:

Re: Передача пераметров SHELL->PERl

Непрочитанное сообщение sofinan » 2009-04-28 7:00:00

какой именно исходник? Исходник на perl выглядит так

Код: Выделить всё

#!/usr/bin/perl
print ${argv[0]}
Кто тут?

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: Передача пераметров SHELL->PERl

Непрочитанное сообщение ProFTP » 2009-04-28 7:13:23

Код: Выделить всё

#!/usr/bin/perl
print "@argv\n";
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
sofinan
мл. сержант
Сообщения: 75
Зарегистрирован: 2008-08-12 9:51:48
Откуда: ОМСК
Контактная информация:

Re: Передача пераметров SHELL->PERl

Непрочитанное сообщение sofinan » 2009-04-28 7:26:44

)))Нее, дело не в скрипте на perl, дело в том что данные которые порождаются show должны перенаправляться на обработку скрипту на try2.pl с параметром $IFACE, а получается что имя скрипта и параметра интерпретириются как два разных скрипта.
Кто тут?

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Передача пераметров SHELL->PERl

Непрочитанное сообщение zg » 2009-04-28 8:12:05

sofinan писал(а):Исходник на perl выглядит так
гм.. кто-то из вас двоих врёт либо ты либо перл
sofinan писал(а):at /root/diplom/try2.pl line 21.
тебя номер строки не смущает?

Аватара пользователя
sofinan
мл. сержант
Сообщения: 75
Зарегистрирован: 2008-08-12 9:51:48
Откуда: ОМСК
Контактная информация:

Re: Передача пераметров SHELL->PERl

Непрочитанное сообщение sofinan » 2009-04-28 8:38:55

)))Ладно каюсь это был я))))))))))))))))))))) Блин дак значит это все таки ошибка в перл скрипте))))))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=<>)- такая тема уже не проканает)
Кто тут?

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Передача пераметров SHELL->PERl

Непрочитанное сообщение zg » 2009-04-28 8:41:20

sofinan писал(а):while ($line=<>)- такая тема уже не проканает)
это к ProFTP, он такой скрипт уже писал :smile:

кстати, можешь поискать по форуму подобных скриптов тут уже штук пять.

Аватара пользователя
sofinan
мл. сержант
Сообщения: 75
Зарегистрирован: 2008-08-12 9:51:48
Откуда: ОМСК
Контактная информация:

Re: Передача пераметров SHELL->PERl

Непрочитанное сообщение sofinan » 2009-04-28 8:42:50

А ну впринципе если сделать так while <STDIN> это работает...Но верно ли это?!)))))
Кто тут?

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: Передача пераметров SHELL->PERl

Непрочитанное сообщение zg » 2009-04-28 8:45:47

sofinan писал(а):А ну впринципе если сделать так while <STDIN> это работает...Но верно ли это?!)))))
если работает, значит верно. В принципе пойдёт и так.