2012-09-08 47 views
1

我正在嘗試編寫一個連接到端口53上的IP列表的腳本 - 並且我希望結果只返回打開的端口。這裏是我在下面運行的腳本 - 我已經嘗試了grepping和切割輸出,但我不知道我是否正確地做到了這一點 - 我似乎不能將腳本結果傳輸到文本文件。在Bash腳本中過濾Netcat結果

#!/bin/bash 

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

我它的簡單道歉,我是新的 - 如果解決的辦法是在其他地方

回答

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 

如果您正在使用的NMAP代替的netcat,你也可以使用這樣的:

nmap 192.168.11.200-254 -p 53 

PS。如果你試圖確定哪個主機上運行DNS服務器,你應該掃描開放53/UDP,而不是53/TCP(選件-u中的netcat)

+0

另外檢查fpdns工具,它來非常方便的DNS指紋識別。 http://linux.die.net/man/1/fpdns –

+0

+1好東西,感謝發佈,我可以在工作中使用它。 – shellter

+0

'if nc -z 192.168.11。$ ip 53;然後回聲...; fi'。不需要明確地檢查'$?'。 – chepner

0

如果你想有一個命令的所有輸出去到一個文件使用&>。在您的例子中,你可以使用:

#!/bin/bash 

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

然後你就可以操作(的grep,sed的,AWK等)myFile不過你想要的。