2011-12-21 73 views
0

我有一个守护进程perl写非标准端口上运行Telnet监听端口的自定义命令8622.如何发送命令到是Perl

现在我想写一个客户端程序,它可以调用守护使用telnet命令进行处理。客户端程序必须根据收到的输出抓取输出并进一步处理。

我没有被端口8622.

以下运行远程登录的任何用户名的密码是我的客户端程序代码

#!/usr/bin/perl -wl 
use Net::Telnet; 

$port = 8622; 
$IP = '127.0.0.1'; 
$cmd = "CSDD"; #command to send 

$telnet = new Net::Telnet (Timeout=>5, port=>$port, Errmode=>'die',Prompt => '/\$ $/i'); 
$telnet->open($IP); 
#$telnet->login('',''); 

print $telnet->cmd($cmd); 
$telnet->close; 
exit; 

守护进程接收命令,但它一直在运行无限即使没有任何条件检查循环。

如果从命令提示符运行telnet,守护进程将正常工作。

我希望我能正确解释我的英文不好。 我很新的Perl,所以请帮助我。

感谢提前:)

回答

0

是提示真是一个美元符号后面加一个空格?尝试使用'/\$ ?$/i'或其他变体。有printwaitfor方法提供了一个比cmd更低级别的接口,想必他们会工作。

+0

感谢您的建议现在守护进程接受客户端程序发送的命令正确,但我无法抓住从守护进程发送到客户端程序的数据。 我正在采取以下方式... 再次感谢您的及时回复 [code] $ telnet-> waitfor('/^$ /'); $ telnet-> print($ cmd); $ result = $ telnet-> waitfor('/^$ /'); print $ result; [code] 它只是输出'1' 如何抓取守护进程发送的数据? 以上代码是否正确? 再次感谢您的及时答复:) – Yogesh 2011-12-22 11:57:52

+0

上守护进程 守护进程的更多信息接受来自客户端程序的套接字连接,然后将其作为 [代码]打印袜子“这是结果”将数据发送回客户端程序; [码] – Yogesh 2011-12-22 13:53:52