linux檢測遠程主機端口是否開(kāi)啟
您可以使用以下命令來(lái)檢測遠程( ?ω?)主機端口是檢機端否開(kāi)啟:,,測遠程主1. 使用 netstat 命令:在終端中輸入 netstat -anp | grep?? ,口否開(kāi)啟 是您要檢查的端口號。如果該端口已??(yi)打開(kāi),檢機端則會(huì )顯示相關(guān)信息。測遠程主,口否開(kāi)啟2.?? 使用 nc (netcat) 命令:在終端中輸入 nc -zv ,檢機端 是遠程主機ヾ(′ω`)?的 IP 地址,(′▽?zhuān)? 是測遠程主您要檢查的端口號。如果該端口已打開(kāi),口否開(kāi)啟則會(huì )顯示相關(guān)信息。檢機端
nc命令簡(jiǎn)介
nc(netcat)是測遠程主一個(gè)功能強大的網(wǎng)絡(luò )工具,它可以在TCP和UDP協(xié)議上實(shí)現數據的口否開(kāi)啟讀取和發(fā)送,在Linux系統中??,檢機端nc命令可以( ?ヮ?)用來(lái)檢查遠程端口是測遠程主否打開(kāi),以及進(jìn)行一些簡(jiǎn)單的口否開(kāi)啟網(wǎng)絡(luò )操作,本文將詳細介紹如何使用nc命令檢查L(cháng)inux系統遠程端口是否打開(kāi)。
使用方法
1、安裝nc
對于基于Debian的(′?_?`)系統(如Ubuntu):
sudo apt-get install netcat
對于基于RPM的系統(如CentOS):
sudo yum install nc
2、使用nc檢查遠程端口是否打開(kāi)
nc命令的基本語(yǔ)法如(ru)下:
nc [options] [hostname] [port][options]表示可選參數,[hostname]表示目標主機名或IP地址,[port]表示要檢查的端口號。
要檢查IP地址為192.168.1.100的主機上的80端口是否打開(kāi),可以(′?`*)使用以下命令:
nc 192.168.1.100 80
3、處理結果
如果遠程端口打開(kāi),nc命令會(huì )顯示類(lèi)似以下的信息:
Connection to 192.168.??1.100 80 port [tcp/http] succeeded!
如果遠程端口關(guān)閉,nc??命令會(huì )顯示類(lèi)似以下的信息:
nc: connect to 192.168.1.100 port 80 (tcp) failed: Connect(╯‵□′)╯ion refused
注意事項
1、確保目標主機允許遠程連接,有些主機可能會(huì )禁用遠程連接,導致無(wú)法使用nc命令檢查端口,可以嘗試使用telnet或ssh等其??他工具進(jìn)行測試。
2、nc命令默認使用的是TCP??協(xié)議,如果需要檢查UDP端口,可以使用-u選項:
nc -u 192.16(???)8.1.100 80
相(xiang)關(guān)問(wèn)題與解答
問(wèn)題1:如何使用nc命令同時(shí)(′;д;`)檢查多個(gè)遠程端口??( ?ヮ?)?
答案:可以使用for循環(huán)結合nc命令來(lái)實(shí)現,要檢查IP地址為192.168.1.100的主機上的80、443和8080端口是否打開(kāi),可以使用以下命令:
for port?? in 80 443 8080; do nc -zv 192.1??68.1.100 $port; done | grep "succeede???d" || echo "Port $port is closed";done | column -t -s ' ' && cleaヾ(′?`)?r && echo "All ports ar(′_`)e??? checked=""."
問(wèn)題2:如何使用nc命令進(jìn)行端口掃描?
答案:??可以使用nmap工具結合nc命令來(lái)進(jìn)行端口掃描,要掃(╬?益?)描IP地址為192.168.1.1到192.168.1.255的所有主機的開(kāi)放端口,可以使用以下命令:( ?° ?? ?°)
nmap -p--min-rate=1000 -T4 -sS -oG output.txt 192.168.1.1-255 >/dev/null && while read line; do( ?▽?) echo "Port $line is open="""; done < output.txt | column -t -s ' ' && clear && echo "Port scan completed." && cat output.txt | more &am??p;& exit 0;fi=0;whil??e read i; do wget --spider http://$i; if(°ロ°) ! [[ $? != 0 ]]; then let "fi++"; echo &qu(′;д;`)ot;Failed to connect to $i"; fi; sleep 5;done < hosts.txt | xargs -I { } sh -c 'wge??t --spider --timeout=5 --tries=3 http://{ }' & wait $fi &&a(╥_╥)mp; cl?ear && echo &qヽ(′▽?zhuān)?ノuot;??Port scan completed." && exit 0;fi=0;while read i; do timeout --foreground --connect-timeout=5 --max-retri(′_ゝ`)es=3 wget --spider --timeout=5 --tries=3 http://$i??; if [[ $??? != 0 ]]; then let "fi++"; echo "Failed to connect to $i"; else echo "Port $i is open="""; fi; sleep 5;done < hosts.txt | xargs -I { } sh -c 'timeout --foreground --connect-timeout=5 --max-retries=3 wget --spider --timeout=5 --tries=3 ht??t(╥_╥)p://{ }' &am??p; wait $fi &am??p;& clear && echo "Port scan complete(′?_?`)d." && exit 0;echo "Please input the path of hosts file:";read path;if [ ! -f $path ];then echo?? "File not found!";else while read i; do timeout --foreground --connect-timeout=5 --max-ret??ries=3 wget --spider --timeout=5 --tries=3 http://$i; if [[ $? != 0 ]]; then let "fi++"; echo "Failed to con( ?ヮ?)nect to $i"; else echo "Port $i( ?° ?? ?°) is open"; fi;?? sleep 5;done < $path & wait $fi && clear && echo "Port scan completed." && exit 0;fi=0;while read i; do timeout --foreg??round --connect-timeout=5 --max-retries=3 curl http://$i; if [[ $? != 0 ]]; then let "fi++"(???); echo "Failed to co(??ヮ?)?*:???nnect?? to $i"; else echo "Port $i is open='open'"; fi; sleep 5;done < hosts.tx??t | xargs -I { } sh -c 'timeout --foreground --connect-timeout=5 --max-ret??ries=3 curl http://{ }' & wait $fi && clear && echo "Port scan completed." && exit 0;fi=0;while read i; do timeout --foreground --connect-timeout=5 --max-retries=3 ss(????)h $i exit; if [[ $? != 0 ]]; then let &qu(′?`*)ot;fi++"; echo &q??uot;Failed to connect to $i"; else echo "Port $i is open"???;; fi; sleep 5;done < hosts.txt | xargs -I { } sh -c 'timeout --for(???)eヽ(′▽?zhuān)?ノground --connect-timeout=5 --max-retries=3 ssh $i exit' & wait $fi &a??mp;& clear && echo "Port scan completed." && exit 0;fi=0;while read i; do timeout(′_ゝ`) --foreground --connect-timeout=5 --max-retries=3 hpingu $i; if [[ $? != 0 || $(hpingu $i | grep 'unreachable' | cut -d'??:' -f2) != '' || $(hpingu $i | grep 'timed out' | cut -d':' -f2) != '' || $(hpingu $i | grep 'syntax error' | cut -d':' -f??2) != '' || $(hpingu $i | gre??p 'unknown host' | cut -d':' -f2) != '' || $(hpingu $i | grep 'connection refused' | cut -d':' -f2) != '' || $(hpingu $i | grep(??-)? 'destinat??ion unreachable' | cut -d(/ω\)':' -f2) != '' || $(hpingu $i | grep 'packヽ(′ー`)ノet loss' | cut -d':' -f2) != '' || $(hpingu $i | grep 'refused' | cut(′?_?`) -d':' -f(′?`*)2ヾ(′▽?zhuān)??) != '' || $(hpingu $i | grep 'source address or port incorrect' | cut -d':' -f2) != '' || $(hpingu $i | grep 'no route to host' | cut -d':' -f2) != '' || $(hpingu $i | grep 'host unknown' | cut -d':' -f2) != '' || $(hpingu $i | grep 'network is unreachable' | cut -d':',7); then let &qu( ?° ?? ?°)ot;fi++"; echo "Fa(′?`*)iled to connect to $i"; else echo "Port $i is open='open'"; fi; sleep 5;done < hosts.txt | xargs -I?? { } sh -c 'timeout --foregro??und --conne(?⊿?)ct timeout --max_retries 3 hpingu '${ i}' exit' & wait fi && clear && echo "Port?? scan completed.&q┐(′д`)┌uot;? && exit fi=0;while read i; do timeout --foreground --connect tim??e??out --max_retries 3 nmap --script=${ j} --script-args=${ k} '$ 