2017-10-05 6 views
0

私はクライアントAから40ホストへのネットワーク接続をチェックする必要があります。その逆もあります。各クライアントへのログオンには時間がかかります。私はこれを達成するための簡単な方法があるのだろうかと疑問に思っていました。双方向ネットワーク接続をテストするEasyway

例:

先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環境を使用している場合にのみ有効です。このスクリプトは動作しませんでした。とにかくニースの解決策、私はあなたがこのようにソケットを使用することができるか分からなかった – Will

+0

@ウィルはい、あなたは正しい、それはバッシュでのみ動作します。励ましてくれてありがとう。 :) –

+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.