URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 3225
[ Назад ]

Исходное сообщение
"Поиск в файле."

Отправлено razor , 30-Июл-04 13:16 
Помогите написать скрипт на Bash.

Есть файл с трафиком пользователей(допустим /home/traffic) вот такого вида.

Active Accounted actions on tty39, User fdfg41 Priv 1
Task ID 16843, Network Accounting record, 00:49:51 Elapsed
task_id=16843 start_time=1091172163 protocol=ip addr=10.0.0.49 pre-session-time=3 pre-bytes-in=113 pre-bytes-out=72
pre-paks-in=4 pre-paks-out=4 bytes_in=533551 bytes_out=2081293 paks_in=5584 paks_out=5373 elapsed_time=2933

Через пустую строку эти записи повторяются для каждого пользователя.
Как видите очень много информации. Меня интересует параметр bytes_out=2081293

Есть файл (/home/username) в котором записано имя пользователя чей трафик нужно узнать.

В скрипте получаем имя пользователя из файла с помощью
user=$(cat /home/username)

А как прописать чтобы скрипт искал в файле /home/traffic этого пользователя (допустим fdfg41) и после этого искал инфу о трафике(bytes_out=2081293), затем записать эту строчку в переменную info, а затем вырезать из нее 10 первых символов(bytes_out=) и записать в др. переменную(trafik=2081293).
Которая запишет его трафик в файл echo $trafik > /home/${user}.traf

Помогите советом.


Содержание

Сообщения в этом обсуждении
"Поиск в файле."
Отправлено Brainbug , 30-Июл-04 14:06 
>Помогите написать скрипт на Bash.
>
>Есть файл с трафиком пользователей(допустим /home/traffic) вот такого вида.
>
>Active Accounted actions on tty39, User fdfg41 Priv 1
> Task ID 16843, Network Accounting record, 00:49:51 Elapsed
> task_id=16843 start_time=1091172163 protocol=ip addr=10.0.0.49 pre-session-time=3 pre-bytes-in=113 pre-bytes-out=72
>pre-paks-in=4 pre-paks-out=4 bytes_in=533551 bytes_out=2081293 paks_in=5584 paks_out=5373 elapsed_time=2933
>
>Через пустую строку эти записи повторяются для каждого пользователя.
>Как видите очень много информации. Меня интересует параметр bytes_out=2081293
>
>Есть файл (/home/username) в котором записано имя пользователя чей трафик нужно узнать.
>
>
>В скрипте получаем имя пользователя из файла с помощью
>user=$(cat /home/username)
>
>А как прописать чтобы скрипт искал в файле /home/traffic этого пользователя (допустим
>fdfg41) и после этого искал инфу о трафике(bytes_out=2081293), затем записать эту
>строчку в переменную info, а затем вырезать из нее 10 первых
>символов(bytes_out=) и записать в др. переменную(trafik=2081293).
>Которая запишет его трафик в файл echo $trafik > /home/${user}.traf
>
>Помогите советом.
Mozno tak.

#!/bin/sh

user=$1
data=$2

grep -A3 "User $user" data | grep bytes_out | cut -d = -f 2 > ${user}.traf

P.S. Pri uslovii 4to strukturi zapisei fiksirovannije. Podumai kak odnozna4no identificirovat polzovatela. V mojem varinate ne vsegda budet korektno rabotat(esli est polzov. test, test1 i test2, to ukazav test budut vidani vse 3).


"Поиск в файле."
Отправлено razor , 30-Июл-04 17:35 

>Mozno tak.
>
>#!/bin/sh
>
>user=$1
>data=$2
>
>grep -A3 "User $user" data | grep bytes_out | cut -d = -f 2 > ${user}.traf

помогло 8-))


>P.S. Pri uslovii 4to strukturi zapisei fiksirovannije. Podumai kak odnozna4no identificirovat polzovatela.
>V mojem varinate ne vsegda budet korektno rabotat(esli est polzov. test,
>test1 i test2, to ukazav test budut vidani vse 3).
С этим поблем нет так как у всех пользователей свои уникальные имена. не повторяющиеся.

Спасибо.