Deutsch
Germany.ruФорумы → Архив Досок→ Linux & Co

интерактивный скрипт, опять прошу помочь...

1097  
Regenwolke постоялец22.05.12 06:50
Regenwolke
22.05.12 06:50 
привет всем!
подскажите, видимо у меня затык с метасимволами...
не выполняется скриптик, где по критерию поиска , введенным пользователем, должны выбраться как раз те файлы, которые ему отвечают (надеюсь, правильно выразилась)
вот собс-но:
#!/bin/sh
mails='/home-hpc/homeq/user/Mailbox/*' - ну это типа папка юзера, в которую восстанавливаются мейлы
echo -e "Enter word:"
read word
echo
grep -i "$word" "$mails"
и почему-то если в mails указываешь конкретный файл в конце - работает, а в таком виде выше с * не работает, пишет No such file or directory. И если даешь просто вручную grep blablabla <тот же самый путь написанный выше со звездочкой> - все выводит как надо...
спасибо!
#1 
BSDLamer Хвостатый Carpal Tunnel22.05.12 08:37
BSDLamer
NEW 22.05.12 08:37 
в ответ Regenwolke 22.05.12 06:50, Последний раз изменено 22.05.12 08:39 (BSDLamer)
grep -i "$word" "$mails"
меняй на
grep -i $word $mails
И вообще можно убрать звездочку и юзать -R у grep.
Know your tools :)
0001, 0010, 0011, 0100, 0101, вышел зайчег погулядь
#2 
Regenwolke постоялец22.05.12 12:30
Regenwolke
NEW 22.05.12 12:30 
в ответ BSDLamer 22.05.12 08:37, Последний раз изменено 22.05.12 12:31 (Regenwolke)
Сердечно благодарю!
мне уже не первый раз помогаешь!
В ответ на:
меняй на
grep -i $word $mails

я меняла в данном случае тока $mails без кавычек. на др примере дома пыталась отработать этот вариант, ниче не получилось... Та же ошибка. Я уж "все глазоньки ясные проглядела" на тему регулярных выражений, казалось, что все д.б. правильно... Оставалось убить себя об стену...
На работе "работает" ))) убрала кавычки у $mails - функционирует... почему - немного неясно. Отличие лишь в том, что шелл дома - bash
вот запустила в режиме отладки:
+ mails='/home-hpc/homeq/user/Mailbox/Lovric_Install-NWC-Suse/*'
+ echo -e 'Enter word:'
Enter word:
+ read word
lovric
+ echo
+ grep -i lovric /home-hpc/homeq/user/Mailbox/Lovric_Install-NWC-Suse/1.eml /home-hpc/homeq/user/Mailbox/Lovric_Install-NWC-Suse/2.eml /home-hpc/homeq/user/Mailbox/Lovric_Install-NWC-Suse/3.eml /home-hpc/homeq/user/Mailbox/Lovric_Install-NWC-Suse/4.eml /home-hpc/homeq/user/Mailbox/Lovric_Install-NWC-Suse/5.eml /home-hpc/homeq/user/Mailbox/Lovric_Install-NWC-Suse/6.eml /home-hpc/homeq/user/Mailbox/Lovric_Install-NWC-Suse/7.eml
...........

т.е. ищет все в тех файлах где suchmuster встречается...
Дома после выполнения строки grep, вернее, попытки выполнения пишет опять, что не найдено файла или директории.
В ответ на:
И вообще можно убрать звездочку и юзать -R у grep.

о, с этого места мона подробнее? ))
это как раз для поиска в подпапках можно использовать?.. мне как раз это тоже решить бы надо...Могу конечно посмотреть,не вопрос, просто уточнить хотелось ))
#3 
BSDLamer Хвостатый Carpal Tunnel22.05.12 12:58
BSDLamer
NEW 22.05.12 12:58 
в ответ Regenwolke 22.05.12 12:30
В ответ на:
Отличие лишь в том, что шелл дома - bash

не знаю что у тебя дома, но например у RHEL /bin/sh это просто symbolic link на /bin/bash.
В ответ на:
почему - немного неясно.

проверь сама
$ mkdir test; cd test; touch file{1,2,3}; cat > script.sh
#!/bin/sh
mails='./*'
echo $mails
echo ================================
echo "$mails"
<Ctrl-D>
$sh script.sh
./file1 ./file2 ./file3 ./scrpt.sh
================================
./*
$
теперь понятней ?
В ответ на:
о, с этого места мона подробнее? ))

поподробнее man grep
В ответ на:
-R, -r, --recursive
Read all files under each directory, recursively; this is equivalent to the -d recurse option.

0001, 0010, 0011, 0100, 0101, вышел зайчег погулядь
#4 
Regenwolke постоялец22.05.12 12:59
Regenwolke
NEW 22.05.12 12:59 
в ответ BSDLamer 22.05.12 08:37
В ответ на:
-R у grep.

вроде да, то самое, что выше писала... но я была в курсе, что для этого используется -r
или это не играет роли, большая или маленькая?
#5 
Regenwolke постоялец22.05.12 13:01
Regenwolke
NEW 22.05.12 13:01 
в ответ BSDLamer 22.05.12 12:58
В ответ на:

поподробнее man grep
-R, -r, --recursive
Read all files under each directory, recursively; this is equivalent to the -d recurse option.

точняк, спасибо, последний вопрос снимается: я не увидела пред сообщения
#6 
Regenwolke постоялец22.05.12 13:07
Regenwolke
NEW 22.05.12 13:07 
в ответ BSDLamer 22.05.12 12:58
В ответ на:
не знаю что у тебя дома, но например у RHEL /bin/sh это просто symbolic link на /bin/bash.

ну да: lrwxrwxrwx 1 root root 4 3. Feb 2009 sh -> bash
дома дружепользовательский Линукс Минт, а на работе как раз RHEL ))
поэтому и удивлялась почемк не работает
#7 
BSDLamer Хвостатый Carpal Tunnel22.05.12 13:34
BSDLamer
NEW 22.05.12 13:34 
в ответ Regenwolke 22.05.12 13:07
Weak quoting
Inside a weak-quoted string there's no special interpretion of:
spaces as word-separators (on inital commandline splitting and on word splitting!)
single-quotes to introduce strong-quoting (see below)
characters for pattern matching
pathname expansion
process substitution
Everything else, especially parameter expansion, is performed!
ls -l "*"
Will not be expanded. ls gets the literal * as argument. It will, unless you have a file named *, spit out an error.
0001, 0010, 0011, 0100, 0101, вышел зайчег погулядь
#8 
Regenwolke постоялец22.05.12 13:39
Regenwolke
NEW 22.05.12 13:39 
в ответ BSDLamer 22.05.12 13:34
В ответ на:
ls -l "*"
Will not be expanded. ls gets the literal * as argument. It will, unless you have a file named *, spit out an error.

отличное объяснение! ))
#9 
BSDLamer Хвостатый Carpal Tunnel22.05.12 13:45
BSDLamer
NEW 22.05.12 13:45 
в ответ Regenwolke 22.05.12 13:39, Последний раз изменено 22.05.12 13:47 (BSDLamer)
источник
quoting and character escaping
0001, 0010, 0011, 0100, 0101, вышел зайчег погулядь
#10 
Regenwolke постоялец22.05.12 14:13
Regenwolke
NEW 22.05.12 14:13 
в ответ BSDLamer 22.05.12 13:45
В ответ на:
./script.sh
./file1 ./file2 ./file3 ./script.sh
========================================
./*

вау, все супер!
скока за частные уроки берешь?...
#11 
BSDLamer Хвостатый Carpal Tunnel22.05.12 14:25
BSDLamer
NEW 22.05.12 14:25 
в ответ Regenwolke 22.05.12 14:13
я ? дорого :) а мануалы и доки бесплатно все преподают :)
0001, 0010, 0011, 0100, 0101, вышел зайчег погулядь
#12 
Regenwolke постоялец22.05.12 14:38
Regenwolke
NEW 22.05.12 14:38 
в ответ BSDLamer 22.05.12 14:25
Ок, подумаю над этим плодотворно... шЮтка )))
еще раз спасибо!
#13 
BSDLamer Хвостатый Carpal Tunnel22.05.12 19:59
BSDLamer
NEW 22.05.12 19:59 
в ответ Regenwolke 22.05.12 14:38
мда кстати а чего это за конструкция у тебя на работе ? Просто ради любопытства.
0001, 0010, 0011, 0100, 0101, вышел зайчег погулядь
#14 
Regenwolke постоялец23.05.12 20:09
Regenwolke
NEW 23.05.12 20:09 
в ответ BSDLamer 22.05.12 19:59, Последний раз изменено 23.05.12 20:20 (Regenwolke)
енту типа альтернативную конструкцию пришлось придумывать "на коленке" и обрабатывать напильником...
речь идет о восстановлении мейлов. и предоставить их пользователю в доступном так сказать виде....
почтарь - OX, Open Exchange.
система архивирования и восстановления - EMC Networker,
NW сервер под RHEL.
Для восстановления прямо в почтовую программу имелся раньше замечательный "тул" для ox-a : OX Sesam, где можно было выбрать нужный мейл и выборочно синхронизировать его с базой почтовика и "положить" в ящик пользователя и синхронизировать с нужной папкой и тд... С некоторого времени с ним возникли проблемы. Суппорт не мог ничем помочь, шеф принял решение, что покупать лицензии дальше для него не имеет смысла. Пришлось срочно искать альтернативное решение.
Решили:
1. Восстанавливать мейлы прямо в дом папку пользователя (эта служба крутиться как раз на одном из узлов линуксвого кластера RHEL)
2. Менять с "рута" на права пользователя, удалять лишние файлы, необходимые для синхронизации с базой данных почтовика. Ведь в этом случае нужны только мейлы.
3. Переименовывать их в eml, для перетаскивания в почтовую программу.
этот скриптик я сбацала, НО!..
Далее возникает опять вопрос, если юзер говорит, что ему нужны ВСЕ мейлы, пусть из определенной папки, то нет проблем. А если он хочет по какой то определенной теме, то при восстановлении сотни или тысячи мейлов, типа искать будет муторно... Названия файлов имеют вид несколько цифр и точка. Например, 22345.
ща в очередной раз опять переиграли...
надо теперь, чтоб после восстановления файлы переименовывать не только с расширением eml, но и чтобы само название файла было взято из Subject, для того чтоб юзер ориентировался уже сам.
т.е. из содержания файла выбрать grep-ом строку темы и присвоить соотвествующее название файла...
сию "фичу" придумывать повесили на меня, видимо, мотивируя мою ответственность за Storage и архивирование и восстановление....
#15 
Regenwolke постоялец23.05.12 20:17
Regenwolke
NEW 23.05.12 20:17 
в ответ BSDLamer 22.05.12 19:59
слушай, если я че "рожу", можно будет на проверку выслать, если опять что-то не заработает?..
#16 
BSDLamer Хвостатый Carpal Tunnel24.05.12 12:08
BSDLamer
NEW 24.05.12 12:08 
в ответ Regenwolke 23.05.12 20:09
ничего не знаю про ОХ но саппорт надо трахать до победного конца. Иначе все обрастет некрасивыми костылями. Пускай пишут патчи, шлют консультантов, возвращают деньги.
В ответ на:
сию "фичу" придумывать повесили на меня, видимо, мотивируя мою ответственность за Storage и архивирование и восстановление....

не понятно какое отношение storage admin имеет к groupware ?
IMHO, подход в корню не верный.
0001, 0010, 0011, 0100, 0101, вышел зайчег погулядь
#17 
Regenwolke постоялец24.05.12 16:30
Regenwolke
NEW 24.05.12 16:30 
в ответ BSDLamer 24.05.12 12:08
В ответ на:
но саппорт надо трахать до победного конца. Иначе все обрастет некрасивыми костылями. Пускай пишут патчи, шлют консультантов, возвращают деньги.

согласна, в идеале так, но в этом случае решение принимаю увы не я...
там получается нашла коса на камень, коллега отвечающий за groupware, "трахал" саппорт, они ни к чему не пришли, он сообщил типа что работать это не будет и решения проблемы нет...
в итоге так элегантненько перевели стрелки - раз я восстанавливаю, то надо это восстановленное предоставить в удобоваримом виде.
насчет отделения мух от котлет правильно говоришь, но почему думаешь, что сам подход неверный и в чем?.. просто интересно бы узнать твое мнение.
от себя могу сказать, что мне лично проще бы как раз тупо восстановить в папку нужные мейлы, известить об этом пользователя, что они лежат в его дом. папке, пусть он сам копирует че ему надо и когда он видит, что ему надо...(В итоге это даже экономия лишних телодвижений получается, таких как повторная синхронизация на "оксе" и абонирование новых папок (и мейлов) в почтовой программе пользователя - в случае восстановления с бекапного сервера прямо в original folder почтового сервера. )
#18 
BSDLamer Хвостатый Carpal Tunnel25.05.12 18:32
BSDLamer
NEW 25.05.12 18:32 
в ответ Regenwolke 24.05.12 16:30
В ответ на:
насчет отделения мух от котлет правильно говоришь, но почему думаешь, что сам подход неверный и в чем?

1) не верный в том что приделываются костыли. Сегодня один, завтра второй, после завтра ты сама запутаешься в этих костылях.
Саппорты бывают разные, тут судить не берусь потому что не знаю какой он у вас там. При правильном применении решения, поставщик обязан пофиксить баги, короче так чтоб работало. Иначе требуйте обратно деньги.
Умей шефу это так преподнести чтоб он сам понял что так дела не делаются.
2) Ничего не знаю об OpenExchange, ниразу его не видел, не знаю его компонентов. Помню когда-то мне приходилось немного потрогать Novell GroupWise на NetWare и на Linux, и я тоже не понятно каким макаром был отвественным за backup/restore/recovery. Чтоб особо не трахаться с восстановлением мы делали следующее:
GroupScheiss как наверное и многие другие groupware, позволял на лету специальными тулзами копировать базы данных юзерских ящиков и прочую дребедень нужную для восстановления, если например потеряешь боевой сервер. Каждая такая копия складывалась на backup сервере в определенную папку с названием и датой. Если юзер хотел восстановить потеряное мыло или термин, мы просто на backup сервере стартовали еще один groupwise подсовывая ему backup за определенный день.
Юзер коннектился к этому серверу и видел свой ящик в таком виде каким он был ну скажем неделю назад. Искал свою почту, экспортировал/архивировал ее, коннектлся обратно к боевому серверу и импортировал все в свой настоящий ящик.
Все это легко автоматизировалось с помощью cron и парой эллементарных скриптов. Были и другие методы, но не помню уже, давно было :)
Может это и применимо к OX раз уж такой шеф.
0001, 0010, 0011, 0100, 0101, вышел зайчег погулядь
#19 
Regenwolke постоялец30.05.12 15:16
Regenwolke
NEW 30.05.12 15:16 
в ответ BSDLamer 25.05.12 18:32, Последний раз изменено 30.05.12 15:33 (Regenwolke)
В ответ на:
не верный в том что приделываются костыли. Сегодня один, завтра второй, после завтра ты сама запутаешься в этих костылях.

абсолютно солидарна с твоим мнением.

если это дальше будет нарастать и "пухнуть", надо будет конечно продавить ситуацию, что "по конструктору Сделай Сам
В ответ на:
Саппорты бывают разные, тут судить не берусь потому что не знаю какой он у вас там.

да уж, горячий "привет" Source Garden
В ответ на:
GroupScheiss как наверное и многие другие groupware, позволял на лету специальными тулзами копировать базы данных юзерских ящиков и прочую дребедень нужную для восстановления, если например потеряешь боевой сервер. Каждая такая копия складывалась на backup сервере в определенную папку с названием и датой. Если юзер хотел восстановить потеряное мыло или термин, мы просто на backup сервере стартовали еще один groupwise подсовывая ему backup за определенный день.

В ответ на:
Может это и применимо к OX раз уж такой шеф.

Так оно почти и есть как ты пишешь. Для этого и имелся отдельный бекапный комп, куда копировалась база, откуда в итоге можно было б восстановить отдельные мейлы - они брались клиентом SEP sesam (http://www.sep.de/de/home/) с люб админской машины для восстановления в почтовый ящик. В последнем тобой описании, если я прально поняла, тут отличие в том, что юзеру просто надо было по новой абонировать папку, в которой мейлы были восстановлены, а до этого админ на "оксе" должен быд выплднить парочку команд для синхронизации с БД.
там я не особо "шарю"...
вот такая тулза:
www.sep.de/de/produkte/applications-groupware-mailsystems-ecm/open-xchang...
#20