2011-12-21 71 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