CyberForum.ru - Форум программистов и сисадминов
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум web-программистов > Форум Perl

Ответ Создать новую тему
 
Старый 24.01.2012, 08:12   #1
dreamer-fkn
Новичок
 
Регистрация: 24.01.2012
Сообщений: 1
Репутация: 0 (0)
По умолчанию Падает Демон перл

Здравствуйте, проблема следующая..
написан демон держащий постоянное подключение к циске по телнету с помощью Net::Telnet::Cisco.
также этот демон является сервером на сокете типа UNIX.

через сокет к нему цепляется клиент и дает команды - которые демон переправляет на циску.

обработку ошибок теленета настроил.. но все равно по истечении какого-то времени демон рвет телнет сессию.. и при подключении к ниму клиента через сокет - демон просто падает..
подскажите в чем может быть причина.
Код Perl 6
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
 
#!/usr/bin/perl -w
#use strict;
use IO::Socket;
use Net::Telnet::Cisco;
if ( ` ps afx | awk '/[0-9]+ server_telnetd/ {print $1;}'`) {
 
   # чтобы не запустить еще один экземрляр.
      print "Usage: service exec-daemon {start|stop}\n exit...\n ";
      exit;
 
 }
 $0 = "server_telnetd"; # даем имя процессу , для красоты
my $basedir="/home/admin/socket/";
sub coderef{
    local $err=@_[0];
    print "\n Error\n";
    print $err;
    if($err=~m/read error/ || $err=~/write error/){
        if($ip eq $cisco1_ip){
            $t1->open($cisco1_ip);
            $t1->login($cisco_user,$cisco_pass);
            @lines=$t1->cmd("configure terminal");
            @lines=$t1->cmd($comm);
            print @lines;
        }
        if($ip eq $cisco2_ip){
            $t2->open($cisco2_ip);
            $t2->login($cisco_user,$cisco_pass);
            @lines=$t2->cmd("configure terminal");
            @lines=$t1->cmd($comm);
            print @lines;
        }
    }
    print "\n End of error\n";
    print "comm=$comm;ip=$ip\n";
}
local $t1 = Net::Telnet::Cisco->new(Timeout => "120",Input_log=>$basedir."ind.log",Output_log=>$basedir."outd.log",Errmode => sub {&coderef});
local $t2 = Net::Telnet::Cisco->new(Timeout => "120",Input_log=>$basedir."in2d.log",Output_log=>$basedir."out2d.log",Errmode => sub {&coderef});
$cisco1_ip="192.168.1.1";
$cisco2_ip="192.168.1.2";
$cisco_user = "user";
$cisco_pass = "pass";
$t1->open($cisco1_ip);
$t1->login($cisco_user,$cisco_pass);
$t2->open($cisco2_ip);
$t2->login($cisco_user,$cisco_pass);
unlink "/tmp/mysock2";
my $server=IO::Socket::UNIX->new(Local => "/tmp/mysock2", Type => SOCK_STREAM, Listen => 5) or die $@;
$server->autoflush(1);
my @lines;
while(my $client=$server->accept()){
  my $data= <$client>;
  print $data, $/;
  local($ip,$com)=$data=~m/(\d+\.\d+\.\d+\.\d+);(.+)$/;
  @coms=split(/;/,$com);
  print @coms;
  if($ip eq $cisco1_ip){
  if(!$t1){
    print("reconnect t1\n");
    $t1->open($cisco1_ip);
    $t1->login($cisco_user,$cisco_pass);
  }
  foreach $comm(@coms){
  @lines=$t1->cmd($comm);
  print @lines;}
  }
  if($ip eq $cisco2_ip){
  if(!$t2){
    print("reconnect t2\n");
    $t2->open($cisco2_ip);
    $t2->login($cisco_user,$cisco_pass);
  }
   foreach $comm(@coms){
    @lines=$t2->cmd($comm);
    print @lines;}
  }
 }
 close($server);
$t1->close();
$t2->close();
 
dreamer-fkn вне форума
Другие темы раздела
Perl перенаправление system
Всем привет! Есть проблема: нужно результат работы java класса перевести в файл. Вызывается так: java -cp blabla.me 1000 1000 СУПЕРОГРОМНАЯСТРОКАКОТОРАЯПОРТИТВЫВОДВКОНСОЛЬ Соответственно в перле вызов через system будет выглядеть так: @args = ("java", "-cp", "blabla.me", "1000", "1000",.... перенаправление system
Обработка текстовых файлов Perl
Доброго времени суток. Сам я perl увы не знаю. Помогите пожалуйста со следующим, если это возможно. Есть каталог с текстовыми файлами на локальном диске винчестера. (например E:\Compile\nsrc - каталог может находится и в другом месте, но обязательно на локальном диске) В каталоге.... Обработка текстовых файлов
Старый 02.02.2012, 18:51   #2
easybudda
Модератор
Эксперт C++
 
Аватар для easybudda
 
Регистрация: 25.07.2009
Адрес: Московская область
Сообщений: 6,805
Репутация: 5686 (3293)
По умолчанию Re: Падает Демон перл

Цитата Сообщение от dreamer-fkn Посмотреть сообщение
по истечении какого-то времени демон рвет телнет сессию
Честно говоря в код не особо вчитывался, и могу ошибаться, но сдаётся мне, тому сокету, которым сервер к циске цепляется, нужно параметр keep alive задавать...
easybudda вне форума
Ответ Создать новую тему

Похожие темы
Тема Автор
Mandriva, Mandrake Linux демон журналирования syslogd
привет всем! сразу сделаю пометку что не оч знаю линукс...но приходится разбираться... Используя демон журналирования syslogd настройте аудит следующих событий: 1. запись в файл \etc\log\log1 всех попыток входа в систему 2. запись в файл \etc\log\log2 всех событий системы кроме попыток...
VIP_Persona
С под Linux демон..
Помогите закончить программу под линукс Нужно написать демон под линукс который бы проверял заданий каталог каждые 3 мин. на придет наличия ,отсутствия и модификации файлов и записывал результаты в лог файл (лудше всего что б было 2 отдельных процесса которые вели б 2 отдельных лога) был написан...
Anya)
С под Linux Не записывает демон в файл
У меня такое задание: записать в файл /tmp/results.log изминения которые происхоят с файлами и папками в определеной директории (указываю сама) Но демон ничего не записывает! Вот код программы! Помогите найти ошибку! #include <sys/types.h> #include <sys/stat.h> #include <stdio.h>...
Gae4ka_1
С++ под Linux демон под BSD для вычислений
Здравстуйте, обитатели форума. прошу помощи в реализации такой практически возникшей передо мной задачи: Дано: - сервер FreeBSD - внешний скрипт через веб-интерфейс формирует данные - длинный список из неизвестного заранее количества float порядка сотен и одно какое особое заданное число...
Larrikin
PHP для начинающих Реально ли написать демон на PHP.
Задача такая. Есль флешка с XMLSockets, она должана обмениваться с сервером 127.0.0.1 по порту 5190. Так вот, я хочу написать сервер этот на PHP. Возможно ли это?
doctor_fray
Опции темы

Текущее время: 04:02. Часовой пояс GMT +4.

Компьютерный форум программистов и сисадминов
Powered by vBulletin® Version 3.8.7 PL2
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Рейтинг@Mail.ru