Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
вопрос самбоводам (файлы, маски) 10.08.05 09:54
Автор: cybervlad <cybervlad> Статус: Elderman
|
вопрос знатным самбоводам
требуется из скрипта (bash, sh, на линуксе) средствами smbclient забрать с виндовой шары файлы вида
$int__i$.[0-9][0-9][0-9]
1) первая проблема - задать маску:
- символ "$" smbclient сильно не нравится, слеш игнорируется;
- конструкция "[0-9][0-9][0-9]" не жрется, а "???" не есть совсем точная.
2) вторая проблема - файлы надо переместить с шары. но если сделать mget *.???; mdele *.???
то есть ненулевая вероятность, что грохнутся файлы, появившиеся в шаре после начала операции копирования.
3) использовать монтирование шары (smbmount) крайне нежелательно, т.к. при "пропадании" шары линуксу сильно плохеет
есть идеи?
|
|
извращенно, но работает ;-)) 10.08.05 13:25
Автор: ZaDNiCa <indeed ZaDNiCa> Статус: Elderman
|
Вот часть скрипта, которая получает список файлов для копирования:
smbclient //host/share -U <user> <pass> -c "ls path/to/files/\$int__i\$*" 2>&1|perl -ne 'if ($_ =~ /(\$int__i\$\.[0-9][0-9][0-9])/) {print "$1\n"}'
далее нужно полученные файлы забрать командой smbget, а удалить smbclient -c "del <filename>"
|
| |
Спасибо! 11.08.05 07:20
Автор: cybervlad <cybervlad> Статус: Elderman
|
> Вот часть скрипта, которая получает список файлов для > копирования: > > smbclient //host/share -U <user> <pass> -c "ls > path/to/files/\$int__i\$*" 2>&1|perl -ne 'if ($_ =~ > /(\$int__i\$\.[0-9][0-9][0-9])/) {print "$1\n"}' > > далее нужно полученные файлы забрать командой smbget, а > удалить smbclient -c "del <filename>"
Спасибо!
Я выкрутился в результате почти аналогично.
Вот часть скрипта:
mskin='$int___i$.???'
smbclient $sharename -I $shareIP -U $shareuser -c "prompt; mget $mskin" $sharepass
inlist=`ls $mskin`
for fname in $inlist; do
smbclient $sharename -I $shareIP -U $shareuser -c "prompt; del $fname" $sharepass
done
А насчет предрассудков с символом $ в имени - это мой косяк :) Дело было не в нем, а в количестве символов "_", я их не досчитал в маске, потому файлы и не находились ;)
|
|
|