The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Помогите с написанием скрипта."
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Помогите с написанием скрипта."  
Сообщение от Arpo email(ok) on 27-Сен-07, 09:25 
Доброго времени суток.

Проблема у меня, застрял.

Есть фаил вида...

d150             m   15GB d151 d152
    d151         s   15GB c1t2d0s3
    d152         s   15GB c1t3d0s3
d140             m  516MB d141 d142
    d141         s  516MB c1t0d0s4
    d142         s  516MB c1t1d0s4
d110             m   16GB d111 d112
    d111         s   16GB c1t0d0s1
    d112         s   16GB c1t1d0s1
d170             s  136GB c1t4d0s0 c1t5d0s0

Это вывод команды metastat -c в 10-ой Соляре. Мне нужно проанализировать послендий компонент каждой строки (в случае с последней стракой два компонента) и на основе анализа получить примерно такой вывод.
DISK c1t0d0 Contains following metadevices - d111(on slice1),  d141(on slice4)
DISK c1t1d0 Contains following metadevices - d112(on slice1),  d142(on slice4)
И т.д.
Тоесть мне надо узнать какой диск какие метаустройства содержит.

Надеюсь я хорошо описал задачу. Заранее спасибо.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Помогите с написанием скрипта."  
Сообщение от NuINu (??) on 27-Сен-07, 09:43 
>Проблема у меня, застрял.
>Есть фаил вида...
>......
>Надеюсь я хорошо описал задачу. Заранее спасибо.

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

DISK c1t0d0 Contains following metadevices - d111(on slice1),  d141(on slice4)

c1t0d0-ключ хеша

[d111,s1] -элемент массива(тоже массив)
работай.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Помогите с написанием скрипта."  
Сообщение от Arpo email(ok) on 27-Сен-07, 09:53 
>[оверквотинг удален]
>
>ну и на каком месте ты застярял? читай построчно свой файл, формируй
>хеш массив массивов. а потом его выведи.
>
>DISK c1t0d0 Contains following metadevices - d111(on slice1),  d141(on slice4)
>
>c1t0d0-ключ хеша
>
>[d111,s1] -элемент массива(тоже массив)
>работай.

Легко сказать трудно сделать, и так читаю фаил.

open(INPUT, "$ARGV[0]") || die "USAGE: $0 filename\n";

while (<INPUT>) {
       @sp=split ' ', $_;

       естессно то что мне надо находится в $sp[3]
       вот отсюда попадробней, я не так хорош в PERL-е...
       И еще мне ужасно интересно как мне поделить c1t3d0s4 на два куска c1t3d0 и s4...
З.Ы. Ксати я работаю и много...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Помогите с написанием скрипта."  
Сообщение от NuINu (??) on 27-Сен-07, 10:58 

>       И еще мне ужасно интересно
>как мне поделить c1t3d0s4 на два куска c1t3d0 и s4...
>З.Ы. Ксати я работаю и много...

:) а я нифига не делаю.

if($sp[3] =~ m/(c\dt\dd\d)(s\d)/) {
  $arg1 = $1;
  $arg2 = $2;
}

я не знаю полный формат записи слайсов солякре, но то что ты привел должно разбираться приблизительно так.
если цифр больше чем одна, к примеру от 1 до 2 то можно записать так
m/(c\d{1,2}t\d{1,2}d\d{1,2})(s\d{1,2})/

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Помогите с написанием скрипта."  
Сообщение от Arpo email(ok) on 27-Сен-07, 12:23 
>[оверквотинг удален]
>if($sp[3] =~ m/(c\dt\dd\d)(s\d)/) {
>  $arg1 = $1;
>  $arg2 = $2;
>}
>
>я не знаю полный формат записи слайсов солякре, но то что ты
>привел должно разбираться приблизительно так.
>если цифр больше чем одна, к примеру от 1 до 2 то
>можно записать так
>m/(c\d{1,2}t\d{1,2}d\d{1,2})(s\d{1,2})/

Да долго мне еще учиться...
Спасибо Бoльшое, пойду пробовать...
А слаисы в Соляре обозначаются так -- c1t3d0(сам диск) s4(слайс или если хатите партиция(aka partition))

З.Ы. Када буду во всем этом разбираться тоже буду нифига не делать...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Помогите с написанием скрипта."  
Сообщение от angra (ok) on 30-Сен-07, 10:10 
Ты так и не описал как интерпретировать последнюю строчку, а если без нее то пожалуйста:

$ cat t.txt

d150             m   15GB d151 d152
    d151         s   15GB c1t2d0s3
    d152         s   15GB c1t3d0s3
d140             m  516MB d141 d142
    d141         s  516MB c1t0d0s4
    d142         s  516MB c1t1d0s4
d110             m   16GB d111 d112
    d111         s   16GB c1t0d0s1
    d112         s   16GB c1t1d0s1

$perl -e 'open(FH, "t.txt");while (<FH>){next unless /^\s*(d\d+).*(c\d+t\d+d\d+)s(\d+)/;$disk{$2}.="$1(on slice $3) "};print "DISK $_ Contains following metadevices - $disk{$_}\n" foreach sort keys %disk'

DISK c1t0d0 Contains following metadevices - d141(on slice 4) d111(on slice 1)
DISK c1t1d0 Contains following metadevices - d142(on slice 4) d112(on slice 1)
DISK c1t2d0 Contains following metadevices - d151(on slice 3)
DISK c1t3d0 Contains following metadevices - d152(on slice 3)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру