подскажите как это можно реализовать

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Funt1k
рядовой
Сообщения: 22
Зарегистрирован: 2007-10-29 14:08:40
Контактная информация:

подскажите как это можно реализовать

Непрочитанное сообщение Funt1k » 2009-07-24 22:19:09

есть много много логов (примерно 1.5 гига) по свой структуре похожи на апачевские.
в первом столбце идет ип с которого заходили и потом куда, надо их перелопатить так, чтобы все ипы превратились в 1 нужный ип
реализовал 1 командой

Код: Выделить всё

cat access.log | awk '{print "10.0.0.1 " $2 " " $3 " " $4 " " $5 " " $6 " " $7 " " $8 " " $9}' > access.log.txt
вот тока файликов access примерно тысяча и все они идут с датой access.log.20090701 access.log.20090702 и так далее
вот как бы в шеле все это перетряхнуть что бы все они стали с нужным мне ипом?
у кого какие идеи есть?

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.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/

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: подскажите как это можно реализовать

Непрочитанное сообщение paradox » 2009-07-24 22:30:15

что то я старею

а обьясните мне и покажите пример что делает эта комманда

Код: Выделить всё

cat access.log | awk '{print "10.0.0.1 " $2 " " $3 " " $4 " " $5 " " $6 " " $7 " " $8 " " $9}' > access.log.txt

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: подскажите как это можно реализовать

Непрочитанное сообщение zg » 2009-07-25 7:00:10

paradox писал(а):что то я старею
угу с каждым новым днём ровно на один день :smile:
paradox писал(а):а обьясните мне и покажите пример что делает эта комманда
с вероятностью 50-60% полностью обнулит лог, с вероятностью 20-30% убьёт частично, ну а если лог маленький, то оставшаяся вероятность - команда сработает, как задумано, то есть просто подставит в начало строки фиктивный айпишнег. Пользы в этом ровно ноль :smile:

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: подскажите как это можно реализовать

Непрочитанное сообщение zg » 2009-07-25 7:02:44

Funt1k писал(а):вот тока файликов access примерно тысяча и все они идут с датой access.log.20090701 access.log.20090702 и так далее
find легко разрулит ситуацию

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: подскажите как это можно реализовать

Непрочитанное сообщение paradox » 2009-07-25 7:05:38

наскоко я помню в access.log много строк
и все разделены \n
поэтому каким образом awk заменит все строки я не представляю))
вот sed наверняка бы справился с этим
или vim

ps
vim может работать не токо как редатор но и как интрепетор комманд

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: подскажите как это можно реализовать

Непрочитанное сообщение zg » 2009-07-25 7:08:08

paradox писал(а):поэтому каким образом awk заменит все строки я не представляю))
дак так и заменит, он ведь строковый процессор. Просто докучи строки разделяет на поля.

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: подскажите как это можно реализовать

Непрочитанное сообщение paradox » 2009-07-25 7:10:00

хм
awk умеет разделять строки?
всмысле разбирать кучу строк разделеных \n ?

зы
пойду проверю)

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: подскажите как это можно реализовать

Непрочитанное сообщение zg » 2009-07-25 7:13:19

paradox писал(а):всмысле разбирать кучу строк разделеных \n ?
ну какбы да -))) его для этого и задумывали

Код: Выделить всё

zg# sh -c 'echo -e "1 2\n3 4"' | awk '{print "bla bla bla "$1" "$2}'
bla bla bla 1 2
bla bla bla 3 4
zg#

paradox
проходил мимо
Сообщения: 11620
Зарегистрирован: 2008-02-21 18:15:41

Re: подскажите как это можно реализовать

Непрочитанное сообщение paradox » 2009-07-25 7:15:29

аааа

Код: Выделить всё

paradox@hosting[8:16:40]~> cat tt.log
sd ds
as sa

paradox@hosting[8:16:48]~> cat tt.log | awk '{ print $2" "$1 }'
ds sd
sa as

paradox@hosting[8:16:51]~>

Funt1k
рядовой
Сообщения: 22
Зарегистрирован: 2007-10-29 14:08:40
Контактная информация:

Re: подскажите как это можно реализовать

Непрочитанное сообщение Funt1k » 2009-07-25 9:41:22

paradox писал(а):что то я старею

а обьясните мне и покажите пример что делает эта комманда

Код: Выделить всё

cat access.log | awk '{print "10.0.0.1 " $2 " " $3 " " $4 " " $5 " " $6 " " $7 " " $8 " " $9}' > access.log.txt
cat выводит весть access.log, awk говорит печатать в первом столбце 10.0.0.1 и потом выводить еще 9 столбцов (со 2 по 9), лог переделывается великолепно.
access.log это лог от виндосовского томката.

Аватара пользователя
f_andrey
майор
Сообщения: 2651
Зарегистрирован: 2007-12-26 1:22:58
Откуда: СПб
Контактная информация:

Re: подскажите как это можно реализовать

Непрочитанное сообщение f_andrey » 2009-07-25 16:23:20

Funt1k писал(а):вот как бы в шеле все это перетряхнуть что бы все они стали с нужным мне ипом?
у кого какие идеи есть?
А можно "раскрыть" задачу? А то так и не понатно чтоже все таки хочется, вот с AWK вроде у вас все нормально, так че делать то надо? или вы просто решили поделится?

To: Paradox
А AWK чумовой инструмент и не зря он называется
man awk писал(а):awk - pattern-directed scanning and processing language
ибо там впихнут реальный язык программирования, с помощью которого можно сотворить с текстом практически все что угодно, а неглупые дядьки даже пишут книжки, например вот такие :evil:
Если ваша тема перенесена, то смотри http://forum.lissyara.su/viewtopic.php?f=1&t=32308

paix
лейтенант
Сообщения: 863
Зарегистрирован: 2007-09-24 12:41:05
Откуда: dn.ua
Контактная информация:

Re: подскажите как это можно реализовать

Непрочитанное сообщение paix » 2009-07-26 12:53:13

f_andrey писал(а): To: Paradox
А AWK чумовой инструмент и не зря он называется
man awk писал(а):awk - pattern-directed scanning and processing language
ибо там впихнут реальный язык программирования, с помощью которого можно сотворить с текстом практически все что угодно, а неглупые дядьки даже пишут книжки, например вот такие :evil:
неглупые дядьки, тобиш Арнольд Роббинс являются меинтейнерами gawk :) так что им положено такие книжки писать.
Но справедливости ради хочется заметить, что awk это узкоспециализированный язык, в основном ориентированный на обработку табличных данных и генерацию отчетов.

Если необходима более сложная логика и функционал, комплексные языки типа python\perl будут гораздо лучшим выбором. Особенно когда заходит вопрос о переносимости программ.
With best wishes, Sergej Kandyla

Funt1k
рядовой
Сообщения: 22
Зарегистрирован: 2007-10-29 14:08:40
Контактная информация:

Re: подскажите как это можно реализовать

Непрочитанное сообщение Funt1k » 2009-07-26 17:42:22

to f_andrey мне нужно как можно в кратчайшие сроки переделать ВСЕ логи томката, чтобы при прочтении логов было видно что заходили только с 1 адреса. Во вторник надо отчитаться перед начальством, а с какой стороны гайки закручивать я пока незнаю (

Аватара пользователя
f_andrey
майор
Сообщения: 2651
Зарегистрирован: 2007-12-26 1:22:58
Откуда: СПб
Контактная информация:

Re: подскажите как это можно реализовать

Непрочитанное сообщение f_andrey » 2009-07-26 18:49:06

Funt1k писал(а):to f_andrey мне нужно как можно в кратчайшие сроки переделать ВСЕ логи томката, чтобы при прочтении логов было видно что заходили только с 1 адреса. Во вторник надо отчитаться перед начальством, а с какой стороны гайки закручивать я пока незнаю (
:)
Как показывает студенческий опыт, и думаю не только мой, в таких ситуациях, гораздо выгоднее править отчет, чем исходные данные, неужели начальство будет самолично копаться в логах, а если это начальство которое на это способно, то уж такую топорную подтасовку заметит ;)
Если ваша тема перенесена, то смотри http://forum.lissyara.su/viewtopic.php?f=1&t=32308

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: подскажите как это можно реализовать

Непрочитанное сообщение zg » 2009-07-26 19:46:00

f_andrey писал(а):Как показывает студенческий опыт, и думаю не только мой, в таких ситуациях, гораздо выгоднее править отчет, чем исходные данные
гм... лично я всегда правил исходные данные, чтобы результат был валидным... иногда правил на пару с препоадавателем, чтобы случайно нобелевскую не получить :roll:
Funt1k писал(а):чтобы при прочтении логов было видно что заходили только с 1 адреса.
куясе, выгонют тебя за такое дело нафик. А делается всё простым скриптом на шеле с использованием файнд и седа.

Funt1k
рядовой
Сообщения: 22
Зарегистрирован: 2007-10-29 14:08:40
Контактная информация:

Re: подскажите как это можно реализовать

Непрочитанное сообщение Funt1k » 2009-07-26 19:50:47

эти данные будут отправлены в высшие инстанции но это секрет куда уже и зачем )
и я нашел решение этого :

Код: Выделить всё

ls | while read i; do cat $i | awk '{print "10.10.10.10 " $2 " " $3 " " $4 "6 " $5 " " $6 " " $7 " " $8 " " $9 }' > $i; done
вот тока сервер под линухами повис и ребутнулся :shock:
сейас перекачиваю на свой xps m1730, должен выдержать!!!

Funt1k
рядовой
Сообщения: 22
Зарегистрирован: 2007-10-29 14:08:40
Контактная информация:

Re: подскажите как это можно реализовать

Непрочитанное сообщение Funt1k » 2009-07-26 19:52:35

Funt1k писал(а):чтобы при прочтении логов было видно что заходили только с 1 адреса.
куясе, выгонют тебя за такое дело нафик. А делается всё простым скриптом на шеле с использованием файнд и седа.[/quote]

не выгонят, это не мне а начальству надо
а можешь этот скрипт на файнл и сел?

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: подскажите как это можно реализовать

Непрочитанное сообщение zg » 2009-07-26 21:17:12

Funt1k писал(а):а можешь этот скрипт на файнл и сел?
могу

Код: Выделить всё

#!/bin/sh

sdir=old
ddir=new
newip=10.0.0.1
fmask='*.txt'

find $sdir -name "${fmask}" | while read f
do
  echo -n "Process file $f ... "
  fname=$(basename "$f")
  ofile=$ddir/$fname
  sed -e "s/[^[:space:]]*/${newip}/" "$f" > $ofile
  echo "done -> $ofile"
done

Код: Выделить всё

zg# ./1.sh
Process file old/1.txt ... done -> new/1.txt
zg# cat old/1.txt
192.168.22.22   12      34      56      78
zg# cat new/1.txt
10.0.0.1        12      34      56      78
zg#


paix
лейтенант
Сообщения: 863
Зарегистрирован: 2007-09-24 12:41:05
Откуда: dn.ua
Контактная информация:

Re: подскажите как это можно реализовать

Непрочитанное сообщение paix » 2009-07-27 11:24:58

Код: Выделить всё

find . -name "*.log" | xargs perl -pi -e 's@^([0-9]{1,3}\.){3}[0-9]{1,3}@10.0.0.1@'
With best wishes, Sergej Kandyla