что надо, есть некая прога, консольная, которая не имеет сокетного интерфейса для соединения через интернет. Надо написать для неё оболочку, которая бы умела пробрасывать диалог пользователя с программой через сокет, т.е. telnet 123.233.12.24 9000 и ты пишешь команды в прогу, и она тебе возвращает значение как будто ты на консоли работаешь. Короче я это дело написал на сабже, но толи уже 5 утра и лыжи не едут, толи еще чего-то. Вобщем один раз оно логинится, но второй уже не хочет. Походу я чего то где то уже не вижу. Это можно обойти перезапуском сервера по отрубанию клента, но не хотелось бы. С зомбями все вроде бы ок, но гдето там чето застревает. #!/usr/bin/perl -w use IPC::Open2; use IO::Socket; #use IPC::Shareable; use strict; my $PORT = 9000; my ($pid1,$line,$server,$client); $server = IO::Socket::INET->new( Proto => 'tcp', LocalPort => $PORT, Listen => SOMAXCONN, Reuse => 1); die "can't setup server $!" unless $server; my $pid = open2(\*RD, \*WR, '/bin/bash') or die "cant open: $!\n"; while($client = $server->accept()){ $client->autoflush(1); print "next client\n"; my ($byte,$c,$rr); if ($pid1 = fork) { while (sysread($client, $byte, 1) == 1) { $c=1 if $byte=~m!.!sm; $rr.=$byte if $c==1; do{ $c=0; $rr=~s!(.*)[\r|\n|\cM|\cJ]$!$1\n!; print $rr; #print "\\r" if $rr=~m!\n$!sm; print WR $rr if $rr ne ''; $rr=''; } if $byte=~m![\r\cM\cJ\n]!sm; } close $client; waitpid($pid1,0); } else { die "cannot fork: $!" unless defined $pid; while(<RD>){ print $client "$_"; } } close $client; } /bin/bash сюда вставлен просто для удобства отладки. конешно я понимаю, что это мегадырища в безопастности и т.п. Т.е. на самом деле там конешно будет /bin/my_cool_program Спасибо за ответ!
Ответ на:
комментарий
от polachok
Ответ на:
комментарий
от phoenix
Ответ на:
комментарий
от vilfred
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от vilfred
Ответ на:
комментарий
от vilfred
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум perl, IPC & socket - чего тут не так? (2006)
- Форум perl обработка stdout and stdin сторонней проги (2006)
- Форум Perl & win32 (2005)
- Форум Perl. Сокеты. (2007)
- Форум Perl: проблема совместимости «use Socket;» (2004)
- Форум Задание на Stepik по Perl. Никак не могу понять, где загвоздка. HELP. (2020)
- Форум клиент и сервер на Перл (2009)
- Форум [perl] прога плодит зомби (2008)
- Форум troubles with perl & tcp sockets (2006)
- Форум двунаправленный канал через ssh на perl (2003)