CSV를 Apache httpd 형식으로 변환하려면 쉘 스크립트가 필요합니다.

CSV를 Apache httpd 형식으로 변환하려면 쉘 스크립트가 필요합니다.

get 및 regex 또는 sed를 수행하려면 스크립트에서 올바른 방향을 가리켜야 합니다.

Site24x7은 모니터링을 위한 소스 IP의 CSV 목록이 포함된 URL을 제공합니다. (다른 형식도 제공하지만, 구조가 많이 부족하기 때문에 CSV가 가장 덜 혼란스러운 것 같습니다.https://www.site24x7.com/multi-location-web-site-monitoring.html)

이와 같이:

Country,City,IP Address External
Australia,Sydney,"101.0.67.53"
Australia,Melbourne,"125.214.65.59"
Belgium,Brussels,"87.238.165.164"
Brazil,São Paulo,"200.170.83.170"
Brazil,Rio de Janeiro,"201.20.20.237"
Canada,Toronto,"208.69.56.166,
208.69.56.171,
208.69.56.172 "
Canada,Montreal,"199.204.45.153,
199.204.45.154,
199.204.45.155,
199.204.45.156"

아파치에 허용 포함 파일로 저장해야 합니다. 이와 같이:

Allow from \
72.5.230.111 \
72.5.230.65 \
72.5.230.84

답변1

#!/bin/bash

webpage="https://www.site24x7.com/multi-location-web-site-monitoring.html"
csv=$(curl -s "$webpage" | grep 'title="CSV"' | \
    sed 's/^.*href="\(http[^ ]*\)".*$/\1/')

echo -e "Allow from \\"
curl -s "$csv" | egrep -o '[0-9.]{7,15}' | paste -s | sed 's/\t/ \\\n/g'

답변2

빠르고 지저분하며 그다지 견고하지 않은 sed(1)한 줄짜리 코드:

echo 'Country,City,IP Address External
Australia,Sydney,"101.0.67.53"
Australia,Melbourne,"125.214.65.59"
Belgium,Brussels,"87.238.165.164"
Brazil,São Paulo,"200.170.83.170"
Brazil,Rio de Janeiro,"201.20.20.237"
Canada,Toronto,"208.69.56.166,
208.69.56.171,
208.69.56.172 "
Canada,Montreal,"199.204.45.153,
199.204.45.154,
199.204.45.155,
199.204.45.156"' | 
    sed -e 1d -e 's/"$//' -e 's/^[^"]*"/Allow from /' -e 's/,$/ \\/'

산출:

Allow from 101.0.67.53
Allow from 125.214.65.59
Allow from 87.238.165.164
Allow from 200.170.83.170
Allow from 201.20.20.237
Allow from 208.69.56.166 \
208.69.56.171 \
208.69.56.172 
Allow from 199.204.45.153 \
199.204.45.154 \
199.204.45.155 \
199.204.45.156

가정:

  • 각 IP 주소 그룹은 "큰따옴표( ) 문자로 묶여 있습니다.
  • "이 문자는 별도의 IP 그룹을 제외하고는 어디에도 나타날 수 없습니다.
  • ,줄 끝의 쉼표( )는 여러 IP 주소가 다음 줄에 계속된다는 것을 나타냅니다.

답변3

내 솔루션은 대신 DNS를 사용합니다.

echo -n 'Allow from ';
host -4 -T -t A site24x7.enduserexp.com |
cut -d ' ' -f 4 |
tr '\n' ' '

관련 정보