Модераторы: ginnie, korob2001
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получение данных через telnet, Net::telnet 
:(
    Опции темы
SergeyH
Дата 29.6.2006, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 29.6.2006

Репутация: нет
Всего: нет



Народ подскажите. Есть телефонная станция LDK-300, она вываливает информацию о звонках в теленет, на определенный IP, т.е. при подключении начинает показываться лог, ни каких команд давать не нужно. Как мне на перле написать скрипт что бы засунуть весь лог в файл.
 
PM MAIL   Вверх
nitr
Дата 29.6.2006, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 2
Всего: 84



я знаю свыше десятка вариантов... вот можешь такой:
Код

#!perl
use IO::Socket;

my $host = 'your_ip_here';
my $port = your_port_here;
my $socket = IO::Socket::INET->new(PeerAddr => $host,
                               PeerPort => $port,
                               Proto => tcp,
                               Type => SOCK_STREAM) or die $@;

open my $file_log, '>', 'log.txt';
while(<$socket>)
{    
    print $file_log $_;
}
close $file_log;
close $socket;


Добавлено @ 11:36 
вот такой smile
Код

#!perl
use Socket;
use IO::Handle;

my $host = 'your_ip_here';
my $port = your_port_here;
while (!socket(SOCK, PF_INET, 1, getprotobyname('tcp'))) {
    print "socket: $!\n"; 
}
autoflush SOCK 1;
$iaddr = inet_aton($host) || die "invalid host: $host"; 
$paddr = sockaddr_in($port, $iaddr) || die "invalid port: $port"; 
print "Connecting to $host at $port... \n"; 

while (!connect(SOCK, $paddr)) {
    print "connect: $!\n";
}
print "connected.";
open my $file_log, '>', 'log.txt';
while(<SOCK>)
{    
    print $file_log $_;
}
close $file_log;
close SOCK;
  

Это сообщение отредактировал(а) nitr - 29.6.2006, 11:39


--------------------
PM   Вверх
SergeyH
Дата 29.6.2006, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 29.6.2006

Репутация: нет
Всего: нет



nitr, я пробовал вот такой код

Код

#!/usr/bin/perl
use Net::Telnet();
use strict;
my $line;
my $session;
$session = Net::Telnet->new(Timeout => 10,
                            Telnetmode => 0,
                            Host => "192.168.50.5",
                            Port => "23",
                            Errmode => "die",
                            dump_log => "/tmp/dump.log",
                            input_log => "/tmp/input.log",
                            output_log => "/tmp/input.log") or die "New error\n";
$session -> open;
while (<$session>)
    {print $_};
$session -> close();
exit 0;


Но почему то он не хочет работать, и твой тоже молчит как рыба об лед, хотя если сам ручками подключишся сразу валится лог.!!!  smile 

  

Это сообщение отредактировал(а) SergeyH - 29.6.2006, 11:44
PM MAIL   Вверх
SergeyH
Дата 29.6.2006, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 29.6.2006

Репутация: нет
Всего: нет



Второй код умирает на connecting my_ip at port

Добавлено @ 12:14 
[sergey@compiler ~]$ telnet
telnet> open 192.168.50.5
Trying 192.168.50.5...
Connected to 192.168.50.5.
Escape character is '^]'.
Welcome to LDK-300 system. Press enter.
Your address is 192.168.50.134. Your port number is 6.
5450 139   001 00:01:12 06/29/06 13:05 O00#                 **     0           0
5439 152   030 00:05:25 06/29/06 13:02 t4957975643                              
5451 169   028 00:00:00 06/29/06 13:07 O5486989             **     0           0
5452 169   027 00:00:09 06/29/06 13:08 O5486989             **     0           0
5453 211   026 00:00:00 06/29/06 13:08 O4086827             **     0           0
5454 211   025 00:00:00 06/29/06 13:08 O4086827             **     0           0
5456 211   024 00:00:00 06/29/06 13:09 O4086827             **     0           0
5439 165   030 00:02:16 06/29/06 13:07 t4957975643                              
5455 105   022 00:00:41 06/29/06 13:09 I620 RING 00:05                          
5441 219   029 00:08:52 06/29/06 13:02 t8212440554                              

а вот что выдает когда я подключаюсь туда ручками, и эту байду нужно запихнуть в файл!!! 
PM MAIL   Вверх
sharq
Дата 29.6.2006, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 3
Всего: 28



SergeyH, 
Цитата(SergeyH @  29.6.2006,  12:43 Найти цитируемый пост)
while (<$session>)

прочти документацию по модулю, вот.

 smile  


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
SergeyH
Дата 29.6.2006, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 29.6.2006

Репутация: нет
Всего: нет



sharq, я ее читал, и какой из методов ты предлагаешь использовать для получения данных!!! get, так он вываливается по тайм-ауту!!! 
PM MAIL   Вверх
sharq
Дата 29.6.2006, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 3
Всего: 28



SergeyH, 
Цитата(SergeyH @  29.6.2006,  13:58 Найти цитируемый пост)
get, так он вываливается по тайм-ауту!!!  

ну правильно! Ты же установил тайм-аут.
Если тебе нужно постоянно записывать лог, то поставь тайм-аут побольше или вообще убери.
Читай либо get, либо getline + цикл.

 smile  


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
SergeyH
Дата 29.6.2006, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 29.6.2006

Репутация: нет
Всего: нет



sharq, я возможно предполагаю что ты лучше меня разбираешься в perl'e но тайм-аут у get я не ставил!!!

Можешь написать пример как бы сделал ты???  

Это сообщение отредактировал(а) SergeyH - 29.6.2006, 13:54
PM MAIL   Вверх
sharq
Дата 29.6.2006, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 3
Всего: 28



SergeyH, если у get не стоит timeout, то он берется из объекта, т.е. тот, кот. ты определил в конструкторе - 10 сек.

 


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
SergeyH
Дата 29.6.2006, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 29.6.2006

Репутация: нет
Всего: нет



Я все равно видно чего то не догоняю, при обычном подключении валится лог, а программно ничего не выводит!!! 
Я timeout ставил 300 и ничего повисел потом отпал, не в этом дела, он походу данные не может получить, а почему не понятно 

Это сообщение отредактировал(а) SergeyH - 29.6.2006, 14:55
PM MAIL   Вверх
sharq
Дата 9.7.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 3
Всего: 28



SergeyH, 
Цитата(SergeyH @  29.6.2006,  15:16 Найти цитируемый пост)
Я timeout ставил 300 и ничего повисел потом отпал, не в этом дела, он походу данные не может получить, а почему не понятно 

Может он у тебя подконнектится не может, может Prompt не совпадает, что в логах пишется?

А ты можешь кинуть доступ, я бы потестировал, а-то так трудно сказать, в чем трабла.

 smile  


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0524 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.