Easyway测试双向网络连接

时间:2017-10-05 13:13:28

标签: bash shell ksh

我遇到的情况是我需要检查从客户端A到40台主机的网络连接,反之亦然。登录每个客户端需要时间。我想知道有没有一种简单的方法来实现这一点,请展示一些亮点。

例如:

目的地1:

目的地来源:好的

目的地来源:KO

来源:

10.1.2.3

目的地:

10.2.2.2
10.3.3.3
10.4.4.4
10.5.5.5

港口:8080

任何人都可以帮助我使用哪个模块吗?请。

2 个答案:

答案 0 :(得分:1)

这应该可以,但我没有测试它。如果它对你有帮助,请告诉我。

编辑:我编辑,因为我发现你需要一个"反之亦然"方式也是。假设您的主服务器和您尝试测试的40台主机之间有ssh密钥。正如评论中所述,这将在Bash中发挥作用。

 #!/bin/bash

port=8080
viceversaIp="10.1.2.3"
while read line
do

    result=$( echo > /dev/tcp/$line/$port )
    if [ -z "$result" ]
    then
        echo "Server : $line ; Port : $port ;  The port is closed!!"
    else
        echo "Server : $line ; Port : $port ;  The port is open!!"
    fi
    result=""

    viceversa_result=$( ssh -n $line " echo > /dev/tcp/$viceversaIp/$port " | tail -1 )

    if [ -z "$viceversa_result" ]
    then
        echo "Server $line can reach $viceversaIp at port $port "
    else
        echo "Server $line can NOT reach $viceversaIp at port $port "
    fi
    viceversa_result=""

done <( cat ips.txt )

问候!

答案 1 :(得分:0)

这是一个使用netcat nc

的oneliner
cat hosts.txt| xargs -n 1 sh -c 'nc -G1 -w1 -z $1 8080' argv0

文件hosts.txt每行包含一个IP /域。

如果您有每个IP的自定义端口,您可以遵循以下格式:

# IP PORT
10.10.0.1 8080
10.10.0.2 80

并做:

cat hosts.txt| xargs -n 2 sh -c 'nc -G1 -w1 -z $1 $2' argv0

netcat 通过TPC连接,该连接是双向的(三次握手),因此可能满足您在&#34;双向测试的要求&#34;

选项-G-w适用于超时:

-G conntimeout TCP connection timeout in seconds
-w If a connection and stdin are idle for more than timeout sec-
   onds, then the connection is silently closed.