2011-12-27 79 views
0

我的需求是一個telnet腳本,用於端口和fire命令。
我可以手動從bash模式做到這一點。
首先,我發送命令「telnet 0 3300」
然後我得到提示說「輸入命令:」
然後我輸入「LOGIN:sogadm:sogadm;」
所以現在我已經登錄到該端口。
之後我再次得到提示「輸入命令:」。
所以我現在可以開啓我的特定命令。端口上的telnet和shell腳本中的激活命令

下面我所示的日誌,它是如何繼續:


的bash-3.00#的telnet 0 3300
試圖0.0.0.0 ...
連接到0
轉義字符'^]'。
CONNECTING蔡...

過程cai3300連...

輸入命令:LOGIN:sogadm:sogadm;
RESP:0;
輸入命令:SET:AIRSUB:MSISDN,551100116:ACTIONTYPE,REFILL:REFILLPROFILEID,1:TRANSACTIONAMOUNT,500000:TRANSACTIONCURRENCY,DZD;
RESP:17200;
輸入命令:


,所以我希望我的腳本來完成這一切。
請幫忙。
在此先感謝

+0

你給出的輸出是什麼應用程序?還是你把它作爲一個你想要一個腳本去做的例子來虛擬它? – 2011-12-27 21:41:12

回答

-1

ssh,如果你可以使用它,可以讓你的生活更輕鬆。
你可以做「ssh -luser命令」。它會提示輸入密碼,所以你必須提供一個密碼。
有一些方法可以避免給它密碼。 this link解釋一種方法。

+0

沒有ssh doesnt工作 – kaka 2011-12-27 13:10:03

0

您想look up "here" documents。類似於

telnet 0 3300 << EndOfTelnet 
sogadm:sogadm; 
0; 
SET:AIRSUB:MSISDN,551100116:ACTIONTYPE,REFILL:REFILLPROFILEID,1:TRANSACTIONAMOUNT,500000:TRANSACTIONCURRENCY,DZD; 
EndOfTelnet 

應該做你在問什麼。關於在腳本中包含密碼的標準警告等。

+0

-1爲HEREDOC無關的參考,愚蠢的回聲命令telnet – Sorin 2011-12-27 21:15:13

+0

嘿朋友我試過這個,它在一定程度上工作: --- – kaka 2011-12-29 13:13:34

1

我建議尋找期望和autoexpect。 Expect旨在控制交互式程序,例如您所擁有的程序(提示輸入密碼,等待命令..)。 Autoexpect是一個腳本,可以從示例會話中生成適當的期望腳本。

運行類似:

autoexpect telnet 0 3300 

,並完成後,生成的腳本將在script.exp

這可以通過這樣的線被整合在你的腳本: expect腳本。 exp

腳本的大部分內容。EXP它的評論,你可以將其刪除,並在您的bash腳本複製腳本並運行它是這樣的:

echo 'set timeout -1 
spawn telnet 0 3300 
expect "Enter command:" 
send -- "LOGIN:sogadm:sogadm;" 
expect "Enter command:" 
send -- "SET:AIRSUB:MSISDN,551100116:ACTIONTYPE,REFILL:REFILLPROFILEID,1:TRANSACTIONAMOUNT,500000:TRANSACTIONCURRENCY,DZD;"' | expect 

注意的是,以上只是一個例子,你應該閱讀文檔和適應您的需求。

或者,您可以切換到Perl和使用Net ::遠程登錄(我敢肯定,Python有類似的東西,如果你是用它更舒服)

-1

可以使用nc(netcat的)命令:

cat command_list | nc 0 3300 

其中command_list是一個文件,其中包含要輸入的命令列表,每行一個。

請注意,這不會導致錯誤;即密碼已經改變等。這是一次性發送每一行輸入的順序。