한 줄 명령을 실행하여 텔넷을 사용하여 원격 TCP 포트 테스트 연결하려면 단일 명령을

매우 제한된 명령과 디스크 공간을 가진 수많은 리눅스 상자가 있습니다. 그러나 그것에 telnet명령이 있습니다.

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

텔넷을 사용하여 특정 컴퓨터에 연결하려면 단일 명령을 실행 한 다음 바로 연결을 끊어야합니다 .

나는 모든 것을 할 수 있지만 단절 부분은 바로 . 텔넷은 일종의 콘솔 또는 터미널을 열고 텔넷 명령을 실행 한 다음 한 줄 명령을 실행하여 즉시 연결을 끊을 수 없습니다.

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

어떻게 한 줄 명령을 실행하여 텔넷을 사용하여 컴퓨터에 연결하고 나중에 연결을 끊을 수 있습니까?



답변

에서 exit명령을 STDIN 으로 파이프 할 수 있어야합니다 telnet. 시험:

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

그것이 작동하는지 확인하십시오. (내 웹 서버에서는 작동하지만 YMMV에서는 작동하는 것 같습니다).


답변

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

 sleep <n> | telnet <server> <port>

n- 자동 종료 전 대기 시간 (초)입니다. 0.5와 같이 분수 일 수 있습니다. 지정된 대기 시간에 일부 필수 출력이 반환되지 않을 수 있습니다. 따라서 그에 따라 증가해야 할 수도 있습니다.

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

port- 대상 서비스 포트 번호

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

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

답변

제 경우에는 이것이 작동합니다. (CentOS 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

답변

명령을 직접 보내고 출력을 얻는 더 좋은 도구는 netcat이라고 생각합니다. 포트를 통해 명령을 넣는 간단하지만 강력한 도구입니다. 이 수퍼 유저의 질문에 사용 예를 볼 수 있습니다 : /superuser/261900/how-can-i-pipe-commands-to-a-netcat-that-will-stay-alive – 아스 커 작업 예제를 제공합니다 몇 초 후에 연결이 닫힙니다.

연결 만 테스트하려면 다음을 사용하십시오.
http://terminalinflection.com/use-netcat-not-telnet-to-test-network-connectivity/


답변

이것은 “일반적인”텔넷 구문과 비슷하게 작동하는 의 다른 대답 버전입니다 . 당신이 내 대답을 좋아한다면, 이것에 대한 찬성이 아니라 원본에 공감하십시오.

#!/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

답변

인터넷에서 찾은 솔루션은 다음과 같습니다.

( echo open 127.0.0.1 23
sleep 5
echo your_login
sleep 5
echo your_password
sleep 5
echo hostname
sleep 5
echo exit ) | telnet

SunOS 및 HP-UX에서 작동합니다.


답변

시험

echo -e '\x1dclose\x0d' | telnet {HOSTNAME} {PORT}

위의 가장 중요한 부분은 종료 상태도 얻는 것입니다. 텔넷이 성공하면 종료 코드는 0이거나 그렇지 않으면 1입니다.