2017-10-05 126 views
0

我有一種情況,我需要檢查從客戶端A到40主機的網絡連接,反之亦然。當登錄到每個客戶端需要時間。我想知道是否有一個簡單的方法來實現這一點,請展示一些燈光。易於測試雙向網絡連接

例:

目標1:

目的地的源:OK

目的地來源:KO

來源:

10.1.2.3

目的地:

10.2.2.2
10.3.3.3
10.4.4.4
10.5.5.5

端口:8080

誰能幫助我應該使用哪些模塊?請。

+0

嘗試'ping'或'telnet'客戶端? –

+0

當指定多個地址時,nmap也很有用 –

+0

@Avihoo Mamka .. telnet .. – Sunny1985

回答

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) 

問候!

+0

這隻會在用戶使用bash環境時才起作用,但是該操作也標記爲'ksh'並通過korn shell這個腳本將無法工作。無論如何,好的解決方案,我不知道你可以使用套接字這種方式 – Will

+0

@是的,你是對的,它只會在Bash工作。感謝您的鼓勵。 :) –

+1

嘿馬蒂亞斯,它按預期工作。謝謝... – Sunny1985

0

這是使用netcatnc一個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其連接是雙向連接(三次握手)所以也許滿足您的「雙向」測試要求

選項-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.