Сделать IP анонимными в выходных данных инструмента веб-аналитики - perl или sed? - PullRequest
2 голосов
/ 20 декабря 2011

Я проанализировал журналы с http://www.w3perl.com/,, теперь я хочу, чтобы IP-адреса были анонимными.

Поэтому я хочу, чтобы они были изменены во всех html-файлах во всем каталоге.

  1. Я думал о том, чтобы всегда превращать третий и четвертый октет в одно и то же число для всех IP-адресов.Но я читал кое-что о XOR-ин их - что это такое?

  2. что является лучшим способом управления заменой и почему?Sed или Perl или другой вариант?

Я довольно новичок в этом, я надеюсь, что я искал другие темы достаточно.Я не нашел ничего связанного с моей проблемой.Заранее спасибо и прошу прощения за мой английский.Этот сайт просто великолепен - за последние дни я многому научился!

1 Ответ

2 голосов
/ 21 декабря 2011

Маскировка IP-адреса может быть лучше достигнута с помощью perl.Вы можете посмотреть здесь для использования уже доступных модулей, чтобы вам не пришлось заново изобретать колесо.К сожалению, я не знаю perl, поэтому могу предложить только sed решение.

Вы можете использовать что-то подобное для замены всех ip-адресов в вашем файле.

sed 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/**masked ip**/g' < yourfile > newfile

Ваш файл:

[jaypal:~/Temp] cat fmp
this is 12.34.55.222 and 
21.3.34.5
also there is 133.42.55.23

Шаг 1: Определите IP-адреса:

[jaypal:~/Temp] sed 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/**&**/g' fmp
this is **12.34.55.222** and 
**21.3.34.5**
also there is **133.42.55.23**

Шаг 2: замените IP-адрес своей маской

[jaypal:~/Temp] sed 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/**&**/g' fmp | sed '/\*\*.*\\*\*/s//**masked ip**/'
this is **masked ip** and 
**masked ip**
also there is **masked ip**

Вы можете сделать sed -i (in-line) замену или использовать >, чтобы перенаправить вывод в другой файл.


Очевидно, это можно свести к следующему.Вышеприведенное было бы полезно для отладки, так как вы можете посмотреть, что изменяется перед внесением изменения.

[jaypal:~/Temp] sed 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/** masked ip **/g' fmp
this is ** masked ip ** and 
** masked ip **
also there is ** masked ip **

Удачи !!

Обновление:

Как опубликовано Отметить в comments, вариант perl будет иметь вид -

perl -pe 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/** masked ip **/g' < inputfile > outputfile

Обновление II:

По требованию OP следующий однострочный файл найдет файлы и выполнит замену.

find /path/to/dir/ -type f -name "*.html" -exec perl -ibak -pe 's/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/** masked ip **/g' {} \;
...