원격 호스트에서 하나의 포트 상태 확인
원격 호스트에서 포트 상태를 확인할 수있는 명령 줄이 필요합니다. 시도 ping xxx.xxx.xxx.xxx:161
했지만 "호스트"를 인식하지 못합니다. 포트가 열려있는 호스트에 대해 동일한 명령을 수행 할 때까지 "좋은"답변이라고 생각했습니다. 이것은 원격 포트의 상태를 확인한 다음 해당 원격 포트를 사용하여 명령을 실행 한 다음 원격 포트 확인 명령을 다시 실행 한 다음 정보를 위해 다음 서버에서 해당 포트를 사용하는 명령을 실행하는 배치 파일입니다. , 등등. 나는 모든 곳을보고 핑이 할 수 있다고 생각했지만 다양한 버전의 핑이 있어야한다고 생각합니다.이 작업을 수행하는 서버에 해당 옵션이 표시되지 않는다고 가정합니다.
딱딱 거리기 위해 웹 사이트에서 웹 기반 원격 포트 검사기를 사용해 보았습니다. 결과는 "문제"서버와 올바른 서버 모두에 대해 정확했습니다. 그러나 500 개 이상의 서버 IP가있는 배치 실행에서는 사용할 수 없습니다.
내가 할 수있는 일이 간단합니까? 내 Perl 기술은 매우 녹슨 (사용하거나 잃어 버림) 배치를 제외한 다른 Windows 기반 언어를 모릅니다. 유닉스는 제 기술이지만 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 기능-> 텔넷 클라이언트를 통해 텔넷을 활성화하거나 관리자 프롬프트에서이를 실행하십시오.
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
종료 코드의 전체 목록은 다음 을 참조하십시오 .
를 눌러 Windows+의 R유형 cmd
및Enter
명령 프롬프트에서
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 <ip/host> port
nc 또는 'netcat'에도 사용 가능한 스캔 모드가 있습니다.
Windows 버전이있는 Hping ( http://www.hping.org/ )을 찾고 있다고 생각합니다 .
"인터페이스는 ping (8) unix 명령에서 영감을 얻었지만 hping은 ICMP 에코 요청 만 보낼 수 없습니다. TCP, UDP, ICMP를 지원합니다 ..."
It's also very useful if you want to see where along a route that a TCP port is being blocked (like by a firewall), where ICMP might not be.
In Bash, you can use pseudo-device files which can open a TCP connection to the associated socket. The syntax is /dev/$tcp_udp/$host_ip/$port
.
Here is simple example to test whether Memcached is running:
</dev/tcp/localhost/11211 && echo Port open || echo Port closed
Here is another test to see if specific website is accessible:
$ echo "HEAD / HTTP/1.0" > /dev/tcp/example.com/80 && echo Connection successful.
Connection successful.
For more info, check: Advanced Bash-Scripting Guide: Chapter 29. /dev
and /proc
.
Related: Test if a port on a remote system is reachable (without telnet) at SuperUser.
For more examples, see: How to open a TCP/UDP socket in a bash shell (article).
참고URL : https://stackoverflow.com/questions/1168317/check-status-of-one-port-on-remote-host
'development' 카테고리의 다른 글
Java Generic 메소드를 정적으로 만드는 방법은 무엇입니까? (0) | 2020.06.10 |
---|---|
define_method에 인수를 어떻게 전달합니까? (0) | 2020.06.10 |
왜 콘솔 창이 닫히면 즉시 출력이 표시됩니까? (0) | 2020.06.10 |
파이썬에서 사전의 키-값 쌍을 인쇄하는 방법 (0) | 2020.06.10 |
Java Collections Framework 구현에 대한 큰 요약? (0) | 2020.06.10 |