Linux 셸 자동화 검 측 네트워크 와 포트 연결 상황
3581 단어 Linux
스 크 립 트 를 공유 하기 전에 스 크 립 트 의 핵심 원리 와 방법 을 보급 합 니 다.
테스트 네트워크
테스트 네트워크, 우 리 는 모두 ping 을 사용 하지만 Liux 의 기본 상황 에서 ping 은 계속 진행 되 기 때문에 ping 명령 의 인자 (ping - h) 를 찾 아 보면 - c 매개 변수 로 ping 의 횟수 를 지정 할 수 있 습 니 다.또한 ping 명령 을 실행 한 후 $를 실행 합 니까?값 0 (성공) 을 되 돌려 줍 니 다. ping 에 이상 이 있 을 때 $를 계속 실행 하 시 겠 습 니까?값 > 0 (이상) 을 되 돌려 줍 니 다.간단 한 코드 는 다음 과 같 습 니 다.
HOST=8.8.8.8
ping -c 4 "$HOST" ## 4 , windows
echo $?
테스트 포트
테스트 포트, 우 리 는 일반적으로 telnet 을 사용 하지만, telnet 은 횟수 나 시간 이 긴 인자 가 없 는 것 같 습 니 다.여기 서 사용 하 는 nc 명령 으로 테스트 합 니 다.nc 에 - t 매개 변 수 는 시간 초과 설정 이 가능 합 니 다. - z 매개 변 수 는 스 캔 테스트 에 만 사 용 됩 니 다. (원래 서비스 에 영향 을 주지 않 는 다 고 이해 합 니 다) nc 명령 을 실행 한 후에 도 $를 사용 합 니까?결과 에 이상 이 있 는 지 확인 하 러 왔 습 니 다.간단 한 코드 는 다음 과 같 습 니 다.
HOST=8.8.8.8
PORT=8080
nc -w 10 -z $HOST $PORT ##-w 10
echo $?
자동화 다 중 IP, 다 중 포트 테스트 스 크 립 트
자, 확대 모집 합 니 다 ~ ~ 스 크 립 트 주석 은 바로 스 크 립 트 에 쓰 여 있 습 니 다. 실행 에 영향 을 주지 않 습 니 다. vi netcheck.sh
#! /bin/bash
# : , , net.list 。
ARGS_NUM=$#
if [ $ARGS_NUM -eq 0 ]; then
LIST="net.list"
elif [ $ARGS_NUM -eq 1 ]; then
LIST=$1
[ ! -f $LIST ] && echo "File[$LIST] does not exists !" && exit 1
else
echo "Usage net_check.sh [net_list_file]" && exit 1
fi
# , , ~~
# java log4j, printf
# , echo
#FUNCTION
log(){
if [ $# -eq 2 ];then
printf "%-5s `date '+%F %T'` $2
" ${1^^}
else
printf "%-5s `date '+%F %T'` $*
" INFO
fi
}
# ,
#FUNCTION
ping_check(){
HOST=$1
log "Ping check : $HOST"
ping -c 4 "$HOST" > /dev/null
if [ $? -eq 0 ];then
log "Ping $HOST successfully"
else
log "ERROR" "Ping $HOST failed"
fi
}
# ,
#FUNCTION
port_check(){
HOST=${1%%" "*} ## , 。 awk
PORT=${1##*" "} ## , 。
log "Port check : $HOST $PORT"
nc -w 10 -z $HOST $PORT > /dev/null
if [ $? -eq 0 ];then
log "Port $HOST $PORT successfully"
else
log "ERROR" "Port $HOST $PORT failed"
fi
}
# ~~
#MAIN
cat $LIST|grep -v "#"|while read line # #
do
NET=`echo ${line##" "}` #ltrim
NET=`echo ${NET%%" "}` #rtrim
[ -z "$NET" ] && continue #ignore null line
NET_PARA_NUM=`echo "$NET"|awk -F[" "]+ '{print NF}'` #
if [ $NET_PARA_NUM -eq 1 ]; then
ping_check "$NET"
elif [ $NET_PARA_NUM -eq 2 ]; then
port_check "$NET"
else
log error "Please make sure your config\"$line\" with the format\"HOST [PORT]\""
fi
done
vi net.list
#test ping
8.8.8.8
10.1.1.1
#test port
10.1.1.1 21
10.1.1.1 21 80
테스트 결과 전시:
INFO 2019-08-29 14:43:48 Ping check : 8.8.8.8
INFO 2019-08-29 14:43:51 Ping 8.8.8.8 successfully
INFO 2019-08-29 14:43:51 Port check : 10.1.1.1 21
ERROR 2019-08-29 14:43:51 Port 10.1.1.1 21 failed
ERROR 2019-08-29 14:43:51 Please make sure your config"10.1.1.1 21 80" with the format"HOST [PORT]"
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바이너리 파일cat 또는tail, 터미널 디코딩 시 처리 방법cat으로 바이너리 파일을 보려고 할 때 코드가 엉망이 되어 식은땀이 났다. 웹에서 스크롤된 정보의 처리 방법과alias의 설정을 요약합니다. reset 명령을 사용하여 터미널을 재설정합니다.이렇게 하면 고치지 못하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.