Извлечение полей из строки журнала vsftpd с использованием bash - PullRequest
0 голосов
/ 05 марта 2019

Привет, я пытаюсь извлечь дату и другие поля, используя скрипт bash, но застрял.

Mon Mar 4 22:24:05 2019 [pid 18349] [myuser] OK UPLOAD: Client ::ffff:127.0.0.1, /path/to/file, 3746080 bytes, 496.03Kbyte/sec

Я могу получить следующие значения

date = ```echo $log | awk '{print $3 FS $2 FS $5}'```
time = `echo $log | awk '{print $4}'`
action = `echo $log | awk '{print $9 FS $10}'`
size = `echo $log | awk '{print $14}'`

Однако у меня возникают проблемы с извлечением ip и username.

for ip `echo $log | awk '{print $12}'` 

дает ::ffff:127.0.0.1, как извлечь из этого ip 127.0.0.1?Кто-нибудь может помочь?Спасибо

1 Ответ

0 голосов
/ 05 марта 2019

Просто небольшое улучшение вашего собственного кода:

echo $log | awk '{gsub(/[^0-9.]/,"",$12);print $12}'
127.0.0.1
echo $log | awk '{gsub(/[\[\]]/,"",$8);print $8}'
myuser

И лучше использовать их так:

ip=$(echo $log | awk '{gsub(/[^0-9.]/,"",$12);print $12}')
username=$(echo $log | awk '{gsub(/[\[\]]/,"",$8);print $8}')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...