LINUX.ORG.RU
решено ФорумAdmin

Как получить список предоставляемых smb шар

 , ,


0

1

Собственно нужен аналог windows`совского net share. Необходимо сопоставить имена предоставляемых шар с их путями в файловой системе. Что то типа такого:

guest      /path/to/share/gust
users      /path/to/share/useкs
etc        /path/to/share/etc
Как?

дистрибутив debian based

Ответ на: комментарий от AliasNameless

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

i_gnatenko_brain ★★★★
()
Ответ на: комментарий от i_gnatenko_brain

нужно для дальнейшей обработки скриптом. На входе имеется имя шары, на выходе нужно получить путь к шаре. Использование регесрпа осложняется наличием кириллических символов в имени шары, и возможной ситуации с разным регистром в имени. Т.Е. на входе в скрипт имеем имя шары «общее» а в smb.conf она прописана как «[Общее]». awk споткнулся...

AliasNameless
() автор топика
Ответ на: комментарий от i_gnatenko_brain

решено

SHARE_PATH=$(sed -n '/\['$SHARE_NAME'\]/I,/\[/{/^\[.*$/!p}' /etc/samba/smb.conf | while read -r line; do
    if echo "${line%?=*}" | grep -iq "path"; then
        echo "${line#*=?}"
    fi
done)
AliasNameless
() автор топика
Ответ на: комментарий от AliasNameless

решено

Неправильно решено!

Во-первых, конфиг самбы 100500 лет умеет include, и зарекаться их использовать не следует.

Во-вторых, как названия шар, так и пути, могут содержать макросы, и, опять же, не следует намеренно отказываться от их применения.

Ну так вот:

testparm -s 2> /dev/null \
 | awk '
    /^\[.+\]$/   {share = gensub(/[\[\]]/,"", "g", $1)}
    $1 == "path" {print share, $3}
'
MumiyTroll ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.