【问题标题】:telnet on a port and fire command from shell script在端口上 telnet 并从 shell 脚本触发命令
【发布时间】:2011-12-28 05:48:28
【问题描述】:

我的要求是在端口上远程登录并触发命令的脚本。
我可以从 bash 模式手动执行此操作。
首先我启动命令“telnet 0 3300”
然后我得到提示说“输入命令:”
然后我输入“LOGIN:sogadm:sogadm;”
所以现在我已经登录到那个端口了。
在此之后,我再次收到提示“输入命令:”。
所以现在我可以触发我的特定命令。

下面我展示了日志,它是如何进行的:


bash-3.00# 远程登录 0 3300
正在尝试 0.0.0.0...
连接到 0。
转义字符是 '^]'。
正在连接到 CAI...

处理 cai3300 已连接...

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


所以我希望我的脚本完成所有这些。
请帮忙。
在此先感谢

【问题讨论】:

  • 你给出的输出,那是什么应用程序?或者您是否将其作为您希望脚本执行的操作的示例?

标签: bash


【解决方案1】:

我建议查找期望和自动期望。 Expect 旨在控制交互式程序,例如您拥有的程序(提示输入密码,期待命令..)。 Autoexpect 是一个脚本,可以从示例会话中生成适当的期望脚本。

运行类似:

autoexpect telnet 0 3300

完成后,生成的脚本将在 script.exp 中

这可以通过如下行集成到您的脚本中: 期望脚本.exp

script.exp 的大部分内容是 cmets,您可以删除它们并将脚本复制到 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 也有类似的东西)

【讨论】:

    【解决方案2】:

    你想look up "here" documents。类似的东西

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

    应该按照你的要求去做。关于在脚本等中包含密码的标准警告。

    【讨论】:

      【解决方案3】:

      ssh,如果你可以使用它,可以让你的生活更轻松。
      您可以执行“ssh -luser 命令”。它会提示输入密码,因此您必须输入密码。
      有一些方法可以避免给它密码。 this link 解释了一种方法。

      【讨论】:

        【解决方案4】:

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

        cat command_list | nc 0 3300
        

        command_list 是一个包含要输入的命令列表的文件,每行一个。

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

        【讨论】:

          猜你喜欢
          • 2014-09-20
          • 2012-06-24
          • 2015-12-30
          • 2023-03-21
          • 2015-07-01
          • 1970-01-01
          • 2019-10-05
          • 2014-11-02
          相关资源
          最近更新 更多