我的要求是在端口和fire命令上telnet的脚本
我可以从bash模式手动执行此操作
首先我点火命令“telnet 0 3300”
然后我得到提示“输入命令:”
那么我输入“登录:sogadm:sogadm;”
所以现在我已登录该端口。
在此之后我再次得到提示“输入命令:”
所以我现在可以解雇我的特定命令。
下面我展示了日志,它是如何进行的:
bash-3.00#telnet 0 3300
尝试0.0.0.0 ...
连接到0.
逃脱角色是'^]'
连接到CAI ......
PROCESS cai3300 CONNECTED ...
输入命令:登录:sogadm:sogadm;
RESP:0;
输入命令:SET:AIRSUB:MSISDN,551100116:ACTIONTYPE,REFILL:REFILLPROFILEID,1:TRANSACTIONAMOUNT,500000:TRANSACTIONCURRENCY,DZD;
RESP:17200;
输入命令:
所以我希望我的剧本能做到这一切
请帮忙。
提前致谢
答案 0 :(得分:1)
我建议查看期望并自动查看。 Expect旨在控制交互式程序,例如您拥有的程序(提示输入密码,期望命令......)。 Autoexpect是一个脚本,可以从示例会话中生成相应的期望脚本。
运行类似:
autoexpect telnet 0 3300
完成后,生成的脚本将在script.exp
中这可以通过以下行集成到您的脚本中: 期待script.exp
script.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 :: Telnet(如果您对它更熟悉,我确信Python有类似的东西)
答案 1 :(得分:0)
telnet 0 3300 << EndOfTelnet
sogadm:sogadm;
0;
SET:AIRSUB:MSISDN,551100116:ACTIONTYPE,REFILL:REFILLPROFILEID,1:TRANSACTIONAMOUNT,500000:TRANSACTIONCURRENCY,DZD;
EndOfTelnet
应该做你要问的事。关于在脚本等中包含密码的标准警告
答案 2 :(得分:-1)
答案 3 :(得分:-1)
您可以使用nc
(netcat)命令:
cat command_list | nc 0 3300
其中command_list是一个包含要输入的命令列表的文件,每行一个。
请注意,这不会导致错误;即,密码已经改变等。它是一次性按顺序发送每一行输入。