выбор строки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
-
- мл. сержант
- Сообщения: 107
- Зарегистрирован: 2007-10-25 16:52:17
- Откуда: tambov это в России
- Контактная информация:
выбор строки
народ подскажите как можно из /var/log/secure выдрать по маске определенные строки ?
Услуги хостинговой компании Host-Food.ru
Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/
- paranoidchaos
- мл. сержант
- Сообщения: 80
- Зарегистрирован: 2007-12-13 10:58:23
Re: выбор строки
grep or egrep
-
- мл. сержант
- Сообщения: 107
- Зарегистрирован: 2007-10-25 16:52:17
- Откуда: tambov это в России
- Контактная информация:
Re: выбор строки
Код: Выделить всё
for I in `cat /var/log/secure`
do
echo $I
done
- paranoidchaos
- мл. сержант
- Сообщения: 80
- Зарегистрирован: 2007-12-13 10:58:23
Re: выбор строки
Код: Выделить всё
IFS=\n
-
- мл. сержант
- Сообщения: 107
- Зарегистрирован: 2007-10-25 16:52:17
- Откуда: tambov это в России
- Контактная информация:
Re: выбор строки
чет непонялparanoidchaos писал(а):Код: Выделить всё
IFS=\n
- Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Re: выбор строки
hammer68 писал(а):чет непонялparanoidchaos писал(а):Код: Выделить всё
IFS=\n
Код: Выделить всё
man sh
Убей их всех! Бог потом рассортирует...
-
- полковник
- Сообщения: 5845
- Зарегистрирован: 2007-12-07 13:51:33
- Откуда: Верх-Нейвинск
Re: выбор строки
для этого специальная прога естьhammer68 писал(а):вот хотел сделать так но не строки выводит а слова а мне всю стоку надо
в твоём случаеparanoidchaos писал(а):grep or egrep
Код: Выделить всё
grep "шаблон" /var/log/secure
Код: Выделить всё
man grep
-
- мл. сержант
- Сообщения: 107
- Зарегистрирован: 2007-10-25 16:52:17
- Откуда: tambov это в России
- Контактная информация:
Re: выбор строки
да я понимаю но в том то и дело я когда цикл делаю то вывод у мну не такой какzg писал(а):для этого специальная прога естьhammer68 писал(а):вот хотел сделать так но не строки выводит а слова а мне всю стоку надов твоём случаеparanoidchaos писал(а):grep or egrepпро шаблоны и синтаксис вызоваКод: Выделить всё
grep "шаблон" /var/log/secure
Код: Выделить всё
man grep
grep "шаблон" /var/log/secure а получается каждое слово с новой строки
а мне надо построчный вывод
- Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Re: выбор строки
lissyara писал(а):hammer68 писал(а):чет непонялparanoidchaos писал(а):Код: Выделить всё
IFS=\n
)))))))))))))))))))Код: Выделить всё
man sh
Убей их всех! Бог потом рассортирует...
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Re: выбор строки
Напиши что есть в файле(какие записи) и что хочешь чтобы получилось. (итог)
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
-
- мл. сержант
- Сообщения: 107
- Зарегистрирован: 2007-10-25 16:52:17
- Откуда: tambov это в России
- Контактная информация:
Re: выбор строки
вот кусок лога
grep 'Accepted password' /var/log/secure >file делаю сортировку т.е. выбираю ток нужные логи
но теперь еще надо кинуть в крон его и наладить статистику таким образом что бы была дневная статистика
вот такая
и так далее
Код: Выделить всё
Feb 22 10:00:49 cluster sshd[31279]: Accepted password for olimp_belikov from 82.179.145.50 port 1881 ssh2
Feb 22 13:01:41 cluster sshd[31337]: reverse mapping checking getaddrinfo for ip-82-179-145-50.apte.tstu.ru failed - POSSIBLE BREAKIN ATTEMPT!
Feb 22 13:01:47 cluster sshd[31337]: Failed password for olimp_belikov from 82.179.145.50 port 1882 ssh2
Feb 22 10:01:47 cluster sshd[31338]: Failed password for olimp_belikov from 82.179.145.50 port 1882 ssh2
Feb 22 10:01:53 cluster sshd[31338]: Failed password for olimp_belikov from 82.179.145.50 port 1882 ssh2
Feb 22 13:01:53 cluster sshd[31337]: Failed password for olimp_belikov from 82.179.145.50 port 1882 ssh2
Feb 22 10:01:57 cluster sshd[31338]: Accepted password for olimp_belikov from 82.179.145.50 port 1882 ssh2
Feb 22 13:01:57 cluster sshd[31337]: Accepted password for olimp_belikov from 82.179.145.50 port 1882 ssh2
Feb 22 10:33:14 cluster sshd[31573]: Accepted password for pchela9091 from 82.179.158.249 port 40524 ssh2
Feb 22 13:33:14 cluster sshd[31572]: Accepted password for pchela9091 from 82.179.158.249 port 40524 ssh2
но теперь еще надо кинуть в крон его и наладить статистику таким образом что бы была дневная статистика
вот такая
Код: Выделить всё
Feb 22 13:01:41 olimp_belikov 82.179.145.50
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Re: выбор строки
crontab -e
И добавь запуск (твой grep ... ) в 23-59 и делов.
И добавь запуск (твой grep ... ) в 23-59 и делов.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
- paranoidchaos
- мл. сержант
- Сообщения: 80
- Зарегистрирован: 2007-12-13 10:58:23
Re: выбор строки
как я понял из этой строки
нужно достать эту
так вот в этом случае лучше использовать авк (awk)
вот кусок кода в цикле разбивается строка по пробелам и все параметры на руках и пихать можно как угодно и куда угодно
Код: Выделить всё
Feb 22 10:01:57 cluster sshd[31338]: Accepted password for olimp_belikov from 82.179.145.50 port 1882 ssh2
Код: Выделить всё
Feb 22 13:01:41 olimp_belikov 82.179.145.50
Код: Выделить всё
grep 'Accepted password' /var/log/secure > file_name
while read parametr
do
par1=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $1}'`
par2=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $2}'`
par3=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $3}'`
par4=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $4}'`
par5=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $5}'`
par6=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $6}'`
par7=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $7}'`
par8=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $8}'`
par9=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $9}'`
par10=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $10}'`
par11=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $11}'`
par12=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $12}'`
par13=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $13}'`
par14=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $14}'`
str="$par1 $par2 $par3 $par9 $par11\n"
echo $str > output_file
done < file_name
-
- мл. сержант
- Сообщения: 107
- Зарегистрирован: 2007-10-25 16:52:17
- Откуда: tambov это в России
- Контактная информация:
Re: выбор строки
спасибочки в общем окнчательно скрипт выглядит такparanoidchaos писал(а):как я понял из этой строки
нужно достать этуКод: Выделить всё
Feb 22 10:01:57 cluster sshd[31338]: Accepted password for olimp_belikov from 82.179.145.50 port 1882 ssh2
так вот в этом случае лучше использовать авк (awk)Код: Выделить всё
Feb 22 13:01:41 olimp_belikov 82.179.145.50
вот кусок кода в цикле разбивается строка по пробелам и все параметры на руках и пихать можно как угодно и куда угодноКод: Выделить всё
grep 'Accepted password' /var/log/secure > file_name while read parametr do par1=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $1}'` par2=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $2}'` par3=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $3}'` par4=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $4}'` par5=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $5}'` par6=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $6}'` par7=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $7}'` par8=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $8}'` par9=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $9}'` par10=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $10}'` par11=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $11}'` par12=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $12}'` par13=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $13}'` par14=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $14}'` str="$par1 $par2 $par3 $par9 $par11\n" echo $str > output_file done < file_name
Код: Выделить всё
#!/bin/sh
day="`date +%d-%m-%y`"
chislo="`date +%b" "%e`"
grep "$chislo" /var/log/secure >tmp$day.txt
grep 'Accepted password' tmp$day.txt > temp$day
while read parametr
do
par1=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $1}'`
par2=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $2}'`
par3=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $3}'`
par4=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $4}'`
par5=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $5}'`
par6=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $6}'`
par7=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $7}'`
par8=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $8}'`
par9=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $9}'`
par10=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $10}'`
par11=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $11}'`
par12=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $12}'`
par13=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $13}'`
par14=`echo "$parametr" | awk 'BEGIN{FS=" "}{print $14}'`
str="$par1 $par2 $par3 $par9 $par11"
echo $str >> /var/log/access/access$day.txt
done < temp$day
rm -rf tmp$day.txt
rm -rf temp$day
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Re: выбор строки
Код: Выделить всё
cat /var/log/secure | grep 'Accepted password' | awk '{print $1,$2,$3,$9,$11}' > file_name
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
-
- проходил мимо
Re: выбор строки
а одним awk'ом обойтись не судьба?dikens3 писал(а):Код: Выделить всё
cat /var/log/secure | grep 'Accepted password' | awk '{print $1,$2,$3,$9,$11}' > file_name
Код: Выделить всё
awk '/Accepted password/ { print $1, $2, $3, $9, $11 }' /var/log/secure >file_name
Код: Выделить всё
cut -sd\ -f1,2,3,9,11 /var/log/secure
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Re: выбор строки
Удобнее... На скрипт выше посмотри. Я лишь показал альтернативу, которая гораздо удобнее и при этом никого не оскорбляя. Чего ты добиваешься? Хочешь продемонстрировать свои знания программирования? И что это тебе даст, если результат всё равно один и тот же? Для простейших операций вполне подойдёт ЛЮБОЕ решение сделанное своими руками.Гость писал(а):Или по воробьям из пушки удобнее?
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
-
- проходил мимо
Re: выбор строки
я не программер, но продолжу флеймить...
Если делать ударение на "свои руки", то твой пример вообще неуместен, потому что копипаста под это понятие не попадает. Короче, держи бублик за useless use of cat, т.е. за совет (и популяризацию) о том как заработать дурную привычку.dikens3 писал(а):Для простейших операций вполне подойдёт ЛЮБОЕ решение сделанное своими руками.
Попробуй так:hammer68 писал(а):Код: Выделить всё
grep "$chislo" /var/log/secure >tmp$day.txt grep 'Accepted password' tmp$day.txt > temp$day [...]
Код: Выделить всё
#!/bin/sh
# формат подстановки вывода команды `foo` устарел в угоду $(foo) [см. ниже цитату с opengroup.org]
date_stamp="$(date +%F)" # если ставить год в конце, отгадай как сортировка по имени файла себя поведет?
# %F is equivalent to ``%Y-%m-%d''.
date_string="$(date +%b\ %e)"
# это можно сделать и только sed'ом, но тогда придется использовать
# костлявые [[:space:]]\{1,\} ,)
# вообщем, sed тут вырезает первые два совпадения построчно, т.е. удаляет не соответствующие regexp'ы
# а cut вырезает ненужные столбцы, точнее оставляет только выбранные
#
# Кстати, нужно тестировать, но обычно sed работает *быстрее* чем awk
sed "/$date_string/!d; /Accepted password/!d" /var/log/secure \
| cut -sd\ -f1,2,3,9,11 >/var/log/access/access$date_stamp.txt
Т.е., используя `foo` в новых программах, мы сами себе откапываем могилу.http://www.opengroup.org/onlinepubs/009695399/xrat/xcu_chap02.html писал(а):Код: Выделить всё
Additionally, the backquoted syntax has historical restrictions on the contents of the embedded command. While the newer "$()" form can process any kind of valid embedded script, the backquoted form cannot handle some valid scripts that include backquotes. For example, these otherwise valid embedded scripts do not work in the left column, but do work on the right: echo ` echo $( cat <<\eof cat <<\eof a here-doc with ` a here-doc with ) eof eof ` ) echo ` echo $( echo abc # a comment with ` echo abc # a comment with ) ` ) echo ` echo $( echo '`' echo ')' ` ) Because of these inconsistent behaviors, the backquoted variety of command substitution is not recommended for new applications that nest command substitutions or attempt to embed complex scripts.
-
- проходил мимо
Re: выбор строки
Поскольку переменные используются только по одному разу, то можно их вообще выкинуть и поставить эти подстановки прямиком в one-liner:Гость писал(а):Код: Выделить всё
date_stamp="$(date +%F)" date_string="$(date +%b\ %e)"
Код: Выделить всё
sed "/$(date +%b\ %e)/!d; /Accepted password/!d" /var/log/secure \
| cut -sd\ -f1,2,3,9,11 >/var/log/access/access$(date +%F).txt
- paranoidchaos
- мл. сержант
- Сообщения: 80
- Зарегистрирован: 2007-12-13 10:58:23
Re: выбор строки
слушайте хорош базарить если на то пошло то как поймёт человек который хочет распарсить лог и при этом у него минимальные знания программинга на сх или баше?
надо показывать сначало примитив и ваще нафига я сунул авк надо была ваще тока средствами баша распарсить а не использовать внешние программы
надо показывать сначало примитив и ваще нафига я сунул авк надо была ваще тока средствами баша распарсить а не использовать внешние программы
- Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
- paranoidchaos
- мл. сержант
- Сообщения: 80
- Зарегистрирован: 2007-12-13 10:58:23
Re: выбор строки
шо те не нравится в баше ? ))
- Alex Keda
- стреляли...
- Сообщения: 35466
- Зарегистрирован: 2004-10-18 14:25:19
- Откуда: Made in USSR
- Контактная информация:
Re: выбор строки
навскидку - тока честно - ты помнишь комбинацию выхзова хистори?
ты вообще историей пользуешься?
=========
пока не видел шелла с более удобной работой чем csh
в баше пробовал юзать эту убогость - не то.
ты вообще историей пользуешься?
=========
пока не видел шелла с более удобной работой чем csh
в баше пробовал юзать эту убогость - не то.
Убей их всех! Бог потом рассортирует...
-
- проходил мимо
оффтоп
lissyara, согласен. Удобно сбрасывать swap в csh (или есть другой способ сброса?):или другой пример:или повторить последнюю запись, содержащуюю строчку:
Это не говоря о том, что в sh(1) тоже есть интересные трюки с историей (вспомним fc -s), не такие удобные правда, но позволяют жить в нем (включив set -E, конечно).
Да и вообще, зачем нужен bash, когда есть zsh, к-ый умеет полностью его эмулировать?
Код: Выделить всё
> swapoff /dev/zvol/tank/page
> ^ff^n
Код: Выделить всё
> diff -u /usr/include/sys/lock.h /sys/sys/lock.h
> cp !$ !:2
Код: Выделить всё
> !?lissyara
Да и вообще, зачем нужен bash, когда есть zsh, к-ый умеет полностью его эмулировать?
- dikens3
- подполковник
- Сообщения: 4856
- Зарегистрирован: 2006-09-06 16:24:08
- Откуда: Нижний Новгород
- Контактная информация:
Re: выбор строки
Так и не понял о чём здесь.Если делать ударение на "свои руки", то твой пример вообще неуместен, потому что копипаста под это понятие не попадает.
Послушайте, друг мой загадочный. Одну и ту же задачу можно решить разными методами. В данном топике есть несколько вариантов решения.
Что-то ещё хотите сказать?
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.