^ $와 ^ #은 무슨 뜻입니까?


17

이해가 안됩니다 BADIPS=$(egrep -v "^#|^$" $tDB). 설명 할 수 있습니까? 전체 코드 :

#!/bin/bash
# Purpose: Block all traffic from AFGHANISTAN (af) and CHINA (CN). Use ISO code. #
# See url for more info - http://www.cyberciti.biz/faq/?p=3402
# Author: nixCraft <www.cyberciti.biz> under GPL v.2.0+
# -------------------------------------------------------------------------------
ISO="af cn" 

### Set PATH ###
IPT=/sbin/iptables
WGET=/usr/bin/wget
EGREP=/bin/egrep

### No editing below ###
SPAMLIST="countrydrop"
ZONEROOT="/root/iptables"
DLROOT="http://www.ipdeny.com/ipblocks/data/countries"

cleanOldRules(){
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT
}

# create a dir
[ ! -d $ZONEROOT ] && /bin/mkdir -p $ZONEROOT

# clean old rules
cleanOldRules

# create a new iptables list
$IPT -N $SPAMLIST

for c  in $ISO
do 
    # local zone file
    tDB=$ZONEROOT/$c.zone

    # get fresh zone file
    $WGET -O $tDB $DLROOT/$c.zone

    # country specific log message
    SPAMDROPMSG="$c Country Drop"

    # get 
    BADIPS=$(egrep -v "^#|^$" $tDB)
    for ipblock in $BADIPS
    do
       $IPT -A $SPAMLIST -s $ipblock -j LOG --log-prefix "$SPAMDROPMSG"
       $IPT -A $SPAMLIST -s $ipblock -j DROP
    done
done

# Drop everything 
$IPT -I INPUT -j $SPAMLIST
$IPT -I OUTPUT -j $SPAMLIST
$IPT -I FORWARD -j $SPAMLIST

# call your other iptable script
# /path/to/other/iptables.sh

exit 0

1
대체 grep grep '^[^#]'이 정규식은 시작할 때 최소한 한 문자 이상을 예상해야하지만 #
Avash Raj

답변:


31

^행의 시작을 표시하고 행 $의 끝 을 표시하는 데 사용되는 정규식 특수 문자 입니다. 이 시점에서 표현 을 고정 시키는 데 사용됩니다 . 그래서^# 로 시작하는 행은 #, 그리고 ^$(시작과 끝 사이에 아무것도 없기 때문에) 빈 줄입니다.

-v에서 grep일치 를 무효화하므로이 명령은 주석 처리되지 않은 (로 시작하지 #않거나) 비어있는 행을 찾습니다 .


15

egrep 패턴과 일치하는 파일을 검색합니다.

-v (또는--invert-matchegrep ) 옵션은 일치하지 않는 선을 선택하기 위해 일치감을 반전시킵니다.

"^#|^$"빈 줄이나 주석 줄인 #으로 시작하는 줄로 평가합니다. 일치를 반전하면 빈 줄이나 주석 줄이 아닌 줄로 평가됩니다.

$tDB 로컬 영역 파일의 값을 저장하는 변수입니다.

이를 모두 정리하면 불량 IP (차단 IP)가 로컬 영역 파일 목록에서 얻은 불량 IP 값을 저장하는 BADIPS에 저장됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.