이 스크립트를 사용하여 호스트가 특정 포트에서 응답하는지 확인합니다.Bash의 내장 /dev/tcp.
IP 주소나 도메인(호스트 이름)을 사용할 수 있습니다.
스크립트 1
#!/bin/bash
HOST_NAME="127.1"
HOST_PORT="80"
if ( (exec 3<>/dev/tcp/${HOST_NAME}/${HOST_PORT}) 2> /dev/null); then
echo -e "PORT: ${HOST_PORT} | ON"
else
echo -e "PORT: ${HOST_PORT} | OFF"
fi
exit;
스크립트 2
#!/bin/bash
HOST_NAME="127.1"
for HOST_PORT in {1..1000}
do
if ( (exec 3<>/dev/tcp/${HOST_NAME}/${HOST_PORT}) 2> /dev/null); then
echo -e "PORT: ${HOST_PORT} | ON"
else
echo -e "PORT: ${HOST_PORT} | OFF"
fi
done
exit;
스크립트 3
#!/bin/bash
HOST_NAME="127.1"
declare -A PORT_ON
for HOST_PORT in {1..65535}
do
if ( (exec 3<>/dev/tcp/${HOST_NAME}/${HOST_PORT}) 2> /dev/null); then
PORT_ON[${HOST_PORT}]="ON"
fi
done
for i in ${!PORT_ON[*]}
do
echo -e "$i : ${PORT_ON[$i]}"
done
exit;
일부 로컬 및 온라인 도메인에서스크립트 3방화벽이나 기타 서비스로 인해 SSH와 같은 일부 포트에서 중단되고 다음 포트 스캔으로 이동하는 데 시간이 더 오래 걸립니다. 어떻게 관리할 수 있는지, 즉시 계속할 수 있는지, 스크립트 속도를 높일 수 있는지, 65535 포트를 모두 스캔하면 시간이 오래 걸립니다.
내 GNU/Linux 배포판:
Distributor ID: Debian
Description: Debian GNU/Linux 10 (buster)
Release: 10
Codename: buster
4.19.0-16-amd64
내 /etc/apt/sources.list
deb http://security.debian.org/debian-security buster/updates main contrib
deb-src http://security.debian.org/debian-security buster/updates main contrib
deb http://deb.debian.org/debian/ buster-updates main contrib
deb-src http://deb.debian.org/debian/ buster-updates main contrib
이 저장소에서만 설치할 수 있습니다.
Bash 스크립트, bash의 내장 /dev/tcp를 사용하여 포트 응답, 시간 지연 가속 확인 |
시간 지연의 속도를 높이고 종료하는 방법은 무엇입니까?
답변1
이것을 실행하십시오 timeout
.
실행시간을 확인하기 위해 타이머 변수를 넣었습니다.
비교할 수는 없는 것 같습니다 0.01
.
를 사용하여 이 스크립트를 실행하면 0.001
타이머 변수의 결과만 표시되고 다른 내용은 표시되지 않습니다.
1
, 0.1
또는 를 사용해도 0.01
항상 동일한 결과를 얻게 됩니다.
이 스크립트를 Ubuntu 22.04에서 테스트하고 포트를 10000으로 설정했습니다.
#!/bin/bash
starttime=$(date +%s)
HOST_NAME="127.0.0.1"
declare -A PORT_ON
for HOST_PORT in {1..10000}
do
if((timeout 0.1 bash -c "</dev/tcp/${HOST_NAME}/${HOST_PORT}") 2> /dev/null); then
PORT_ON[${HOST_PORT}]="ON";
fi
done
for i in ${!PORT_ON[*]}
do
echo -e "$i: ${PORT_ON[$i]}"
done
endtime=$(date +%s)
echo "runtime: $(($endtime - $starttime))"