1

ポート 53 で IP のリストに接続するスクリプトを作成しようとしています。その結果、開いているポートのみが返されるようにします。以下で実行しているスクリプトを次に示します。出力を grep してカットしようとしましたが、これが正しく行われているかどうかはわかりません。スクリプトの結果をテキスト ファイルにパイプすることもできません。

#!/bin/bash

for ip in $(seq 200 254); do
    nc -v 192.168.11.$ip 53 &
done

私はその単純さをお詫びします私は新しいです-そして解決策が他の場所にある場合

4

2 に答える 2

2

コマンドの終了コードを確認します。接続が成功するにはゼロである必要があります。また、接続が確立されたら、 -zオプションを使用して接続をドロップします。

#!/bin/bash

for ip in $(seq 200 254); do
    nc -z 192.168.11.$ip 53
    if [ $? -eq 0 ]; then
        echo "Hit: 192.168.11.$ip"
    fi
done

netcatの代わりにnmapを使用していた場合は、次のように使用できます。

nmap 192.168.11.200-254 -p 53

PS。DNSサーバーを実行しているホストを特定する場合は、53/tcpではなくopen53/ udpをスキャンする必要があります(netcatのオプション-u )

于 2012-09-08T11:46:05.247 に答える
0

コマンドのすべての出力をファイルに出力したい場合は、&>. あなたの例では、次を使用できます。

#!/bin/bash

for ip in $(seq 200 254); do
    nc -v 192.168.11.$ip 53 &>> myFile
done

その後、必要に応じて操作 (grep、sed、awk など)myFileできます。

于 2012-10-06T00:47:33.007 に答える