我遇到的情况是我需要检查从客户端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
任何人都可以帮助我使用哪个模块吗?请。
答案 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
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.