Как преобразовать Файл журнала в CSV с помощью удара

Удаление - это операция записи, поэтому вам необходимо удалить доступ для записи из каталога, который содержит файл (используя файл ~ / foo / bar.txt в качестве примера):

chmod a-w ~/foo/

или

chmod 666 ~/foo/

Это, однако, все еще разрешает root, чтобы удалить файл. Если даже не хочу, чтобы все стало более сложным. Насколько я знаю , лучший способ (и это легко обходятся на обращении команды) - это установить его на «неизменяемое»:

sudo chattr +i ~/foo/bar.txt

, которые остановят root от удаления файла, но они всегда могут Просто запустите Chattr -i ~ / foo / bar.txt еще раз, чтобы отменить его, чтобы он больше похож на препятствие, чем полный блок. Это, однако, прекращает пользователей без root от удаления его, и они не будут иметь право запустить Chattr -i на нем, так что это самый простой способ, поскольку оно не влияет на все файлы в каталоге Отказ

-121--120270-

Перенаправляйте весь вывод как блок.

(
   yum -y update

   service restart nginx

   yum install atop

   cat /var/log/somelog.log > /home/cron/php/script

) > /dev/null 2>&1

0
27.01.2015, 20:06
3 ответа

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

$ while read -r mon day time host threat date time crit count sugg out exip \
                in inip tcp port export cat vuln; do 
     printf "%s | " "$mon $day $time" "$host" "$threat" "$date $time" \ 
                    "$crit $count $sugg" "$out $exip" "$in $inip" "$tcp \
                    $port" "$export" "$cat" "$vuln"
  done < file; printf "\n"
Jan 21 11:10:44 | hostname.internal.nl | THREAT | 2015/01/21 11:10:44 | critical 5 reset-both | outside 10.10.10.10 | inside 10.16.61.4 | tcp 39898 | 80 | web-browsing | any Bash Remote Code Execution Vulnerability(36731) | 

Я мог бы дать вам лучшие способы Perl или awk, но они будут зависеть от того, как именно вы определяете свои поля. Если вы обновите свой вопрос с более подробной информацией (например, будут ли всегда 3 слова в критическом поле? Нам нужно знать, что всегда будет одинаково на вашем входе и что может измениться), я могу дать вам лучшее решение.

4
28.01.2020, 02:20

Если ваши входные строки являются одинаковым типом, вы можете поделать это:

#!/bin/bash

LOG="/root/1.txt"

echo "Date | Hostname | Threat | DATE+time | Critical/High | Count | --- | External IP | Internal IP | TCP/UDP | Port | External Port | Category | Vulnerability" > 1.csv

< $LOG awk '{print $1" "$2" "$3 " | " $4 " | " $5 " | " $6" "$7 " | " $8" "$9" "$10 " | " $11" "$12 " | " $13" "$14 " | " $15" "$16 " | " $17 " | " $18 " | " $19" "$20" "$21" "$22" "$23" "$24}' >> 1.csv

Вход:

Jan 21 11:10:45 hostname.internal.nl THREAT 2015/01/21 11:10:44 critical 5 reset-both outside 10.10.10.10 inside 10.16.61.4 tcp 39898 80 web-browsing any Bash Remote Code Execution Vulnerability(36731)

Jan 22 11:12:45 hostname2.internal.nl THREAT2 2015/01/22 12:10:44 critical2 52 reset-both2 outside2 10.10.10.12 inside2 10.16.61.42 udp 39899 82 web-browsing2 any2 Bash Remote Code Execution Vulnerability(36731)2

Вывод:

Date | Hostname | Threat | DATE+time | Critical/High | Count | --- | External IP | Internal IP | TCP/UDP | Port | External Port | Category | Vulnerability
Jan 21 11:10:45 | hostname.internal.nl | THREAT | 2015/01/21 11:10:44 | critical 5 reset-both | outside 10.10.10.10 | inside 10.16.61.4 | tcp 39898 | 80 | web-browsing | any Bash Remote Code Execution Vulnerability(36731)
Jan 22 11:12:45 | hostname2.internal.nl | THREAT2 | 2015/01/22 12:10:44 | critical2 52 reset-both2 | outside2 10.10.10.12 | inside2 10.16.61.42 | udp 39899 | 82 | web-browsing2 | any2 Bash Remote Code Execution Vulnerability(36731)2
0
28.01.2020, 02:20

Я нашел это очень полезно для сбора файлов журналов из S3 Cloudfront и загрузки их в Google Drive.

Я использовал awscli на Mac-Os после его установки с помощью homebrew awscli. Я выполнил команду:

aws s3 sync s3://bucketname/domain/ .

Корзина была заполнена журналами облачного интерфейса (я включаю это при редактировании облачного интерфейса) и всеми файлами, которые были загружены на мой локальный компьютер. Я запустил разархивированные файлы .gz и получил текстовые файлы.

После этого в той же папке я использовал команду find + exec для создания одного большого файла журнала, как описано ниже. После этого я разбил журнал на формат журнала Cloudfront и сгенерировал файл CSV, используя запятые в качестве разделения в awk. Этот CSV был загружен на Google диск для некоторого сводного анализа и помог мне найти плохие края и отсутствующие файлы.

Это сценарий bash, который я использовал для этого:

`#!bash/bin
#Join Logs into one Big File using cat , if there are any default  headers on your files . you need to remove them
FILE_NAMES_START = 'E1I*'
find . -type f -name FILE_NAMES_START -exec cat {} + >> big_log_file.txt
#Output Log File 
LOG="big_log_file.txt"
echo "DATE , TIME , X-Edge-Location , SC-Bytes , Client-IP , Method , Cs-Host , File-URI , HTTP Status , Referer , User Agent , URI Query , Cookie-Id , Edge-Result , Edge-Request-ID , Host Header , Protocol , Bytes , Time Taken , X-Forwader , SSL Protocol , SSL Cipher , CDN-Result-Type" >> csv_data.csv
< $LOG awk '{print $1 " ,  " $2" ,  " $3 " , " $4 " , " $5 " , " $6 " , " $7 " , " $8 " , " $9 " , " $10 " , " $11 " , " $12 " , " $13 " , " $14 " , " $15 " , " $16 " , " $17 " , " $18 " , " $19 " , " $20 " , " $21 " , " $22 " , " $23 " , " $24}' >> big_csv_file.csv`

Убедитесь, что файлы txt и этот код bash находятся в одной библиотеке, или добавьте необходимый / в сценарий.

csv> 100 МБ не так хорошо работает в таблицах Google.

0
28.01.2020, 02:20

Теги

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