명령과 디스크 공간이 매우 제한된 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