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"

Apacheには許可インクルードファイルとして保存する必要があります。このように:

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

速くて汚れていて、それほど頑丈でない限り、1行の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' ' '

関連情報