programing

원격 호스트에서 포트 하나의 상태 확인

i4 2023. 5. 26. 20:43
반응형

원격 호스트에서 포트 하나의 상태 확인

원격 호스트의 포트 상태를 확인할 수 있는 명령줄이 필요합니다.나는 노력했다.ping xxx.xxx.xxx.xxx:161하지만 "호스트"를 인식하지 못합니다.포트가 열려 있는 호스트에 대해 동일한 명령을 수행하기 전까지는 "좋은" 답변이라고 생각했습니다.이는 원격 포트의 상태를 확인한 다음 원격 포트를 정보로 사용하는 명령을 실행하고 원격 포트 확인 명령을 다시 실행한 다음 다음 다음 서버에서 해당 포트를 정보로 사용하는 명령을 실행하는 Windows의 배치 파일에 대한 것입니다.제가 여기저기 찾아봤는데 핑이 할 수 있을 것 같은데, 다양한 버전의 핑이 있을 것 같은데, 제가 하고 있는 서버가 그 옵션을 보여주지 않는 것 같습니다.

웃기려고 웹 사이트에서 웹 기반 원격 포트 검사기를 사용해 봤는데 "문제" 서버와 올바른 서버 모두에 대해 결과가 정확했습니다.그러나 500개 이상의 서버 IP가 포함된 일괄 실행에서는 사용할 수 없습니다.

제가 할 수 있는 간단한 일이 있을까요?제 Perl 기술은 매우 미숙합니다(사용하든 손실하든). 배치를 제외한 다른 Windows 기반 언어는 모릅니다.Unix는 제 기술이지만, Widows Server 2003에서 실행해야 합니다.

Windows, Linux 및 Mac OS X에서 사용할 수 있는 nmap 또는 netcat와 같은 포트 스캐너를 찾고 있는 것 같습니다.

예를 들어, 알려진 IP에서 텔넷을 확인합니다.

nmap -A 192.168.0.5/32 -p 23

예를 들어 host.example.com 에서 20~30개의 열린 포트를 찾습니다.

nc -z host.example.com 20-30

명령 프롬프트에서 telnet 명령을 사용할 수 있습니다.예를 들어 포트 80을 사용하여 IP 192.168.10.1에 연결하려면

telnet 192.168.10.1 80

Windows 7 이상에서 텔넷을 사용하려면 를 클릭합니다.링크된 문서에서 제어판 -> 프로그램 및 기능 -> Windows 기능 -> telnet 클라이언트를 통해 텔넷을 활성화하거나 관리 프롬프트에서 이를 실행합니다.

dism /online /Enable-Feature /FeatureName:TelnetClient

스크립팅 목적으로, 저는 다음과 같은 것을 발견했습니다.curl명령을 사용하면 다음과 같은 작업을 수행할 수 있습니다.

$ curl -s localhost:80 >/dev/null && echo Connected. || echo Fail.
Connected.
$ curl -s localhost:123 >/dev/null && echo Connected. || echo Fail.
Fail.

모든 서비스에 대해 작동하지 않을 수 있습니다.curl) 할 수 하는 것이 할 수 할 수 있습니다.

[ "$(curl -sm5 localhost:8080 >/dev/null; echo $?)" != 7 ] && echo OK || echo FAIL

추가됨: 추가됨-m5최대 연결 시간 제한을 5초로 설정합니다.

하려면 호스트가 유효한지 .6종료 코드:

$ curl -m5 foo:123; [ $? != 6 -a $? != 7 ] && echo OK || echo FAIL
curl: (6) Could not resolve host: foo
FAIL

코드를 하려면 다음을.curl host:port항목:

$ curl localhost:80
curl: (7) Failed to connect to localhost port 80: Connection refused

man curl종료 코드의 전체 목록을 확인할 수 있습니다.

+ 유형을 누릅니다.cmd그리고

명령 프롬프트에 입력

telnet "machine name/ip" "port number"

포트가 열려 있지 않으면 다음 메시지가 표시됩니다.

"Connecting To "machine name"...Could not open connection to the host, on port "port number":

그렇지 않으면 열려 있는 포트로 들어갑니다(빈 화면이 표시됨).

nc 명령 사용,

nc -zv <hostname/ip> <port/port range>

For example,
nc -zv localhost 27017-27019
or
nc -zv localhost 27017

telnet 명령을 사용할 수도 있습니다.

telnet <ip/host> port

nc 또는 'netcat'에도 사용할 수 있는 스캔 모드가 있습니다.

제 생각에 당신은 윈도우 버전이 있는 Hping(http://www.hping.org/), 을 찾고 있는 것 같습니다.

"인터페이스는 ping(8) unix 명령에서 영감을 얻었지만 hping이 ICMP 에코 요청만 보낼 수 있는 것은 아닙니다.TCP, UDP, ICMP를 지원합니다."

또한 TCP 포트가 방화벽에 의해 차단되는 경로를 따라 ICMP가 차단되지 않는 위치를 확인하려는 경우에도 매우 유용합니다.

Bash에서는 연결된 소켓에 대한 TCP 연결을 열 수 있는 유사 디바이스 파일을 사용할 수 있습니다.은 문은입니다./dev/$tcp_udp/$host_ip/$port.

다음은 Memcached가 실행 중인지 테스트하는 간단한 예입니다.

</dev/tcp/localhost/11211 && echo Port open || echo Port closed

다음은 특정 웹 사이트에 액세스할 수 있는지 확인하는 또 다른 테스트입니다.

$ echo "HEAD / HTTP/1.0" > /dev/tcp/example.com/80 && echo Connection successful.
Connection successful.

자세한 내용은 고급 Bash 스크립팅 가이드: 29장 및 을 참조하십시오.

관련:SuperUser에서 텔넷 없이 원격 시스템의 포트에 연결할 수 있는지 테스트합니다.

자세한 내용은 "배시 셸에서 TCP/UDP 소켓을 여는 방법"을 참조하십시오(문서).

언급URL : https://stackoverflow.com/questions/1168317/check-status-of-one-port-on-remote-host

반응형