2011-12-27 131 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是一个文件,其中包含要输入的命令列表,每行一个。

请注意,这不会导致错误;即密码已经改变等。这是一次性发送每一行输入的顺序。