한 줄 명령을 실행하여 텔넷을 사용하여 원격 TCP 포트를 테스트합니다.

한 줄 명령을 실행하여 텔넷을 사용하여 원격 TCP 포트를 테스트합니다.

명령과 디스크 공간이 매우 제한된 Linux 시스템이 많이 있습니다. 하지만 명령이 있습니다 telnet.

각 프로브에 원격으로(프로그래밍 방식으로) 연결하고 SSH를 통해 한 줄의 Linux 명령을 실행했습니다.

특정 컴퓨터에 연결하려면 텔넷을 사용하여 단일 명령을 실행해야 합니다.그런 다음 즉시 연결을 끊습니다..

다 할 수 있지만지금 연결 해제부분. 텔넷은 일종의 콘솔이나 터미널을 열는데 텔넷 명령을 실행한 다음 즉시 연결을 끊는 줄을 알 수 없습니다.

이렇게 하면 텍스트 출력을 쉽게 구문 분석하여 지정된 포트의 컴퓨터를 연결할 수 없다는 오류 메시지를 얻을 수 있습니다. 이것이 바로 제가 찾고 있는 것입니다.

그렇다면 텔넷을 사용하여 컴퓨터에 연결한 후 연결을 끊기 위해 한 줄 명령을 어떻게 실행합니까?

답변1

exit다음 명령을 파이프로 연결할 수 있어야 합니다 telnet.

echo 'exit' | telnet {site} {port}

작동하는지 확인하세요. (내 웹서버에서는 작동하는 것 같지만 YMMV).

답변2

가장 간단하고 쉬운 방법은 다음과 같습니다.

 sleep <n> | telnet <server> <port>
  • n- 자동으로 종료되기 전에 대기하는 시간(초)입니다. 0.5와 같은 소수일 수 있습니다. 일부 필수 출력은 지정된 대기 시간 내에 반환되지 않을 수 있습니다. 따라서 그에 따라 증가해야 할 수도 있습니다.

  • server- 대상 서버 IP 또는 호스트 이름.

  • port- 대상 서비스 포트 번호.

다음과 같이 출력을 파일로 리디렉션할 수도 있습니다.

sleep 1 | telnet <server> <port> > output.log

답변3

내 경우에는 이것이 작동합니다. (센트OS 7):

while read host port; do
r=$(bash -c 'exec 3<> /dev/tcp/'$host'/'$port';echo $?' 2>/dev/null)
if [ "$r" = "0" ]; then
     echo "$host $port is open"
else
     echo "$host $port is closed"
     exit 1 # To force fail result in ShellScript
fi
done

답변4

이것은 다른 버전입니다위에서 답변함이로 인해 "일반적인" 텔넷 구문과 더 유사하게 작동합니다. 내 답변이 마음에 들면 이 답변이 아닌 원래 답변을 제공하십시오.

#!/bin/bash
if [ "$2" == "" ]; then
 echo "Syntax: $0 <host> <port>"
 exit;
fi

host=$1
port=$2

r=$(bash -c 'exec 3<> /dev/tcp/'$host'/'$port';echo $?' 2>/dev/null)
if [ "$r" = "0" ]; then
     echo "$host $port is open"
else
     echo "$host $port is closed"
     exit 1 # To force fail result in ShellScript
fi

관련 정보