Всем привет.
Как реализовать на bash (лучше на sh) такой функционал:
Существует список файлов, в файле list.txt в виде:
/usr/local/1
/usr/local/2
/usr/local/abvgd
Необходимо разослать владельцам этих файлов письма. Причем так, чтобы владелец получал письмо со списком всех своих файлов (которые в list.txt).
?
Как на bash (sh) сформировать список файлов по владельцам (для отправки им письма)
Модераторы: /dev/random, Модераторы разделов
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Как на bash (sh) сформировать список файлов по владельцам
ну сначала надо получить список "юзер файл"
затем его отсортировать
а дальше порезать по пользователям и им разослать. вот тут у меня просто времени не хватает... попозже.
Код: Выделить всё
sed -r 's/.*/ls -l "&"/e; s/^(\S+\s+){2}(\S+)(\s+\S+){4}\s+/\2 /' file_list
затем его отсортировать
Код: Выделить всё
sort
а дальше порезать по пользователям и им разослать. вот тут у меня просто времени не хватает... попозже.
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Как на bash (sh) сформировать список файлов по владельцам
вот примерно так это работает:
вот скрипт ttt.sed
а файл для проверки формируется командами из прошлого поста :)
вроде работает...
Shell
$ cat list.txt | sort | ./ttt.sed
sendmail masha "/home/masha/ggwww
/home/masha/ggwwe
/home/masha/ggww
/home/masha/ggwq
/home/masha/ggwq
/home/masha/ggw
/home/masha/ggsdfsd
/home/masha/ggqwqw
/home/masha/ggeww
/home/masha/gg332
/home/masha/gg23323
/home/masha/gg212
/home/masha/gg11
/home/masha/gg"
sendmail masha3 "/home/masha/ggwwq"
sendmail vasya "/home/vasya/fwwwf
/home/vasya/fsddf
/home/vasya/ff455
/home/vasya/ff444
/home/vasya/ff43
/home/vasya/ff23
/home/vasya/ff2234
/home/vasya/ff2
/home/vasya/ff
/home/vasya/fdddf
/home/vasya/fddddf
/home/vasya/fasaf"
sendmail vasya1 "/home/vasya/wwwff"
вот скрипт ttt.sed
Код: Выделить всё
#!/bin/sed -rnf
1{
h
b
}
G
s/^(\S+) ([^\n]+)\n\1 ([^\n]+)/\1 \2\n\3/
t old_name
# новое имя: отправляем список
s/\n.*//
:send
x
s/ / "/
s/$/"/
s/^/sendmail /p
b
:old_name
x
$ b send
а файл для проверки формируется командами из прошлого поста :)
вроде работает...
Спасибо сказали:
-
- Сообщения: 229
- ОС: Windows Vista
Re: Как на bash (sh) сформировать список файлов по владельцам
[ -f $f ] && stat -c '%U:%n' $f
Я конечно далек от мысли...(с)
-
- Сообщения: 92
Re: Как на bash (sh) сформировать список файлов по владельцам
drBatty писал(а): ↑20.01.2010 13:46ну сначала надо получить список "юзер файл"
Код: Выделить всё
sed -r 's/.*/ls -l "&"/e; s/^(\S+\s+){2}(\S+)(\s+\S+){4}\s+/\2 /' file_list
Не работает

Пробую так:
echo "/290409_183141.rev" | sed -r 's/.*/ls -l "&"/e; s/^(\S+\s+){2}(\S+)(\s+\S+){4}\s+/\2 /' /usr/local/file_list
Файл пустой.
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Как на bash (sh) сформировать список файлов по владельцам
добавьте p и покажите вывод
а есть-ли такой файл?
-
- Сообщения: 92
Re: Как на bash (sh) сформировать список файлов по владельцам
Стормозил, извиняюсь. Забыл поставить скобку ">" .
Сейчас все работает.
Экспериментирую дальше.
- Можно пояснить вот этот кусок? Что в переменной f?
Сейчас все работает.
Экспериментирую дальше.
[ -f $f ] && stat -c '%U:%n' $f
- Можно пояснить вот этот кусок? Что в переменной f?
-
- Сообщения: 229
- ОС: Windows Vista
Re: Как на bash (sh) сформировать список файлов по владельцам
Я конечно далек от мысли...(с)
Спасибо сказали:
-
- Сообщения: 92
Re: Как на bash (sh) сформировать список файлов по владельцам
Все вроде получилось...
Но возник еще вопрос, как имя хозяина файла подменить на почтовый адрес?
У меня в скрипте (другом) пока получалось отправлять почту только так:
Код: Выделить всё
echo $notice_message | /usr/sbin/sendmail -i -f ${admin_user}@${email_domain} -- admin@mailbox.ru
А так в скрипте через просто sendmail не получается.