Как я могу удалить IP-адреса из файлов журнала через какое-то время

DSRM будет хорошо работать, также.

Однако, если Вы хотите остаться 100% PowerShell, можно использовать поставщика ADSI для выполнения этого исходно в PowerShell без модулей.

 $computer = "computername"
 $dom = [System.DirectoryServices.ActiveDirectory.Domain]::GetCurrentDomain()            
 $root = $dom.GetDirectoryEntry()            
 $search = [System.DirectoryServices.DirectorySearcher]$root            
 $search.filter = "(&(objectclass=computer)(name=$computer))"            
 $search.findall() | foreach-object{$_.GetDirectoryEntry() } | foreach-object{$_.DeleteObject(0)} 
6
задан 25 May 2018 в 14:37
3 ответа

PCRE! (Perl-совместимое регулярное выражение)

s/\b(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\b/REMOVED IP/g

Используйте его в качестве фильтра в сценарии Perl или на любом другом подходящем языке (довольно многие используют PCRE или какой-либо другой достаточно близкий язык регулярных выражений, который будет работать), чтобы перезаписать файлы журнала через 7 дней .

$ cat > file_with_ip
some text from 192.168.1.1
^D
$ perl -p -i -e 's/\b(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\.(1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])\b/REMOVED IP/g' file_with_ip
$ cat file_with_ip
some text from REMOVED IP
1
ответ дан 3 December 2019 в 00:44

Я не думаю, что logrotate с этим справится; вам может потребоваться создать сценарий, который будет распаковывать файлы, обрабатывать их с помощью awk или sed, чтобы удалить IP-адреса, а затем повторно сжимать их. Просто не могу этого сделать с «активными» файлами журнала.

0
ответ дан 3 December 2019 в 00:44

В Ubuntu> 12.04 / apache 2.4 , с конфигурацией по умолчанию вы можете использовать что-то вроде этого:

for file in `find /var/log/apache2 -type f -name ".*gz"  ! -name "*.ano.*" -mtime +7`
do
    datestamp=`date +"%Y%m%d%H%M%s"`
    # echo Process $file
    zcat $file |sed -E "s/([0-9]{1,3}\.[0-9]{1,3})\.[0-9]{1,3}\.[0-9]{1,3}/\1.0.0/"|gzip > ${file%.*}.ano.${datestamp}.gz 
    # rm -f $file # Only call this if you are sure that the command before succeeds, otherwise you will lose data.
done

Это создает копию всех * .gz файлы старше 7 дней и заменяют последние два байта всех IP-адресов 0.0 в скопированной версии с добавлением суффикса и .

Если вы не используете сжатие или другое сжатие, например bz2 , вы должны соответствующим образом изменить команды, например zcat -> bzcat .

Наконец, вы можете вызывать эту процедуру через cron один раз в день в неделю.

0
ответ дан 3 December 2019 в 00:44

Теги

Похожие вопросы