【问题标题】:Shell/Bash script telnet testing a multicast addressShell/Bash 脚本 telnet 测试多播地址
【发布时间】:2013-08-18 02:48:30
【问题描述】:

我正在尝试创建一个 shell/bash 脚本来 telnet 测试到一个多播地址。我目前有以下内容:

telnet <ip_address> <port_number>

但是,这会挂起:

<server_name>% ./telnet_test.sh
Trying <ip_address>...
Connected to <ip_address>.
Escape character is '^]'.
//Hangs here for a few seconds...
Connection to <ip_address> closed by foreign host.

如何测试组播地址,如果成功则立即返回,这样我就不必等到连接被外部主机关闭。

我需要在同一个脚本中测试多个地址。

编辑:

我应该提到的是,我在一个有严格控制的防火墙的银行网络上,我不能安装 netcat。

这个测试的目的只是为了看看我是否可以从我当前的主机连接到那个路由。

【问题讨论】:

  • 先输入转义字符^[然后输入exit、quit或bye来关闭telnet。
  • 检查 mcast 地址是为了什么?用 telnet 测试基于 UDP 的 mcast 没有任何意义,telnet 是一个 TCP 程序。此外,如果主持人看到 mcast 消息,则无需回复它们,因此您无法证明任何事情。
  • testing the multicast address 是什么意思?

标签: bash shell unix


【解决方案1】:

改用netcat
-z - 扫描监听守护进程。
-w 3 - 3 秒后超时

#!/bin/bash

host_list="www.google.com www.stackoverflow.com"
port=80

for host in $host_list; do
    nc -z -w 3 $host $port > /dev/null 2>&1
    if [[ $? = 0 ]]; then
        printf "%s%s%s\n" " [$host:" "UP" "]"
    else
        printf "%s%s%s\n" " [$host:" "DOWN" "]"
    fi
done

【讨论】:

    【解决方案2】:

    如果您安装了expect,您可以使用它来控制您的telnet

    #!/usr/bin/except
    spawn telnet <ip address> <port number>
    set timeout 10
    expect "Connected to"
    send "exit\r"
    

    查看man expectsome other article 了解更多信息。

    【讨论】:

      猜你喜欢
      • 2014-06-18
      • 2011-07-19
      • 2023-03-21
      • 2015-06-13
      • 2022-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多