Как на bash (sh) сформировать список файлов по владельцам (для отправки им письма)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

rfcr
Сообщения: 92

Как на bash (sh) сформировать список файлов по владельцам

Сообщение rfcr »

Всем привет.

Как реализовать на bash (лучше на sh) такой функционал:

Существует список файлов, в файле list.txt в виде:

/usr/local/1
/usr/local/2
/usr/local/abvgd

Необходимо разослать владельцам этих файлов письма. Причем так, чтобы владелец получал письмо со списком всех своих файлов (которые в list.txt).

?
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как на bash (sh) сформировать список файлов по владельцам

Сообщение drBatty »

ну сначала надо получить список "юзер файл"

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

sed -r 's/.*/ls -l "&"/e; s/^(\S+\s+){2}(\S+)(\s+\S+){4}\s+/\2 /' file_list

затем его отсортировать

а дальше порезать по пользователям и им разослать. вот тут у меня просто времени не хватает... попозже.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как на bash (sh) сформировать список файлов по владельцам

Сообщение drBatty »

вот примерно так это работает:

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

а файл для проверки формируется командами из прошлого поста :)
вроде работает...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
smaharbA
Сообщения: 229
ОС: Windows Vista

Re: Как на bash (sh) сформировать список файлов по владельцам

Сообщение smaharbA »

[ -f $f ] && stat -c '%U:%n' $f
Я конечно далек от мысли...(с)
Спасибо сказали:
rfcr
Сообщения: 92

Re: Как на bash (sh) сформировать список файлов по владельцам

Сообщение rfcr »

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

Файл пустой.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как на bash (sh) сформировать список файлов по владельцам

Сообщение drBatty »

rfcr писал(а):
20.01.2010 17:12
drBatty писал(а):
20.01.2010 13:46
ну сначала надо получить список "юзер файл"
sed -r 's/.*/ls -l "&"/ep; s/^(\S+\s+){2}(\S+)(\s+\S+){4}\s+/\2 /' file_list

Не работает :(



добавьте p и покажите вывод

rfcr писал(а):
20.01.2010 17:12
Пробую так:

echo "/290409_183141.rev"

а есть-ли такой файл?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
rfcr
Сообщения: 92

Re: Как на bash (sh) сформировать список файлов по владельцам

Сообщение rfcr »

Стормозил, извиняюсь. Забыл поставить скобку ">" .
Сейчас все работает.
Экспериментирую дальше.

[ -f $f ] && stat -c '%U:%n' $f

- Можно пояснить вот этот кусок? Что в переменной f?
Спасибо сказали:
smaharbA
Сообщения: 229
ОС: Windows Vista

Re: Как на bash (sh) сформировать список файлов по владельцам

Сообщение smaharbA »

rfcr писал(а):
20.01.2010 17:20
[ -f $f ] && stat -c '%U:%n' $f

- Можно пояснить вот этот кусок? Что в переменной f?


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

while read f; do [ -f $f ] && stat -c '%U:%n' $f; done < list.txt | sort -t:
Я конечно далек от мысли...(с)
Спасибо сказали:
rfcr
Сообщения: 92

Re: Как на bash (sh) сформировать список файлов по владельцам

Сообщение rfcr »

drBatty писал(а):
20.01.2010 16:06
а файл для проверки формируется командами из прошлого поста :)
вроде работает...


Все вроде получилось...
Но возник еще вопрос, как имя хозяина файла подменить на почтовый адрес?
У меня в скрипте (другом) пока получалось отправлять почту только так:

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

echo $notice_message | /usr/sbin/sendmail -i -f ${admin_user}@${email_domain} -- admin@mailbox.ru


А так в скрипте через просто sendmail не получается.
Спасибо сказали: