답변:
명령
netstat -antu
사용중인 모든 tcp 및 udp 포트가 표시됩니다. 결과는 다음과 같습니다.
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:59753 0.0.0.0:* LISTEN
로컬 주소 필드에서 콜론 뒤의 숫자는 사용중인 포트를 나타냅니다. 상태가 "LISTEN"인 경우 들어오는 연결에 사용중인 포트를 의미합니다. 의 IP 주소 경우 Local Address
필드가되어 0.0.0.0
들어오는 연결 인터페이스에 할당 된 IP 주소를 허용됩니다 의미 - 컴퓨터의 연결 원래 외부에서이 방법 때문에.
그것이 말 localhost
했거나 127.0.0.1
컴퓨터의 연결 만 수락하는 경우.
또한 -p
매개 변수 를 추가하고 루트로 실행하면 포트를 연 프로세스가 표시됩니다.
$ sudo netstat -antup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:59753 0.0.0.0:* LISTEN 860/rpc.statd
사용중인 것으로 표시되지 않은 것은 무료이지만 사용자 (권한이없는 계정)는 1023 이상의 포트만 열 수 있습니다.
-antu
로 -tuna
🐟 로 쓸 수 있습니다
열린 포트를 확인하는 좋고 신뢰할 수있는 방법은 ss
( 더 이상 사용되지 않는 대체)을 사용하는 것이며 netstat
, 높은 권한을 요구하지 않고 스크립트에서 사용할 수 있습니다 (예 :) sudo
.
사용법 : -l
수신 포트 옵션, -n
DNS 확인을 무시하는 옵션 및 소스 포트의 필터 NN
: src :NN
( NN
모니터하려는 포트로 교체 ). 더 많은 옵션을 보려면man ss
ss -ln src :NN
예 :
[user@server ~]# ss -ln src :80
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:80 *:*
[user@server ~]# ss -ln src :81
State Recv-Q Send-Q Local Address:Port Peer Address:Port
그리고 스크립트에서 grep을 사용하여 출력에 요청한 포트가 포함되어 있는지 테스트 할 수 있습니다. 포트 80을 사용하는 예 (위 참조) :
myport=80
# count the number of occurrences of port $myport in output: 1= in use; 0 = not in use
result=$(ss -ln src :$myport | grep -Ec -e "\<$myport\>")
if [ "$result" -eq 1 ]; then
echo "Port $myport is in use (result == $result) "
else
echo "Port $myport is NOT in use (result == $result) "
fi
# output:
Port 80 is in use (result == 1)
포트 81을 사용하지 않는 예 (위 참조)
myport=81
result=$(ss -ln src :$myport | grep -Ec -e "\<$myport\>")
if [ "$result" -eq 1 ]; then
echo "Port $myport is in use (result == $result) "
else
echo "Port $myport is NOT in use (result == $result) "
fi
# output:
Port 81 is NOT in use (result == 0)
또 다른 방법:
telnet localhost <PORT_NUMBER>
포트가 비어 있으면 오류가 발생합니다. 포트가 사용 중이면 텔넷이 연결됩니다.