вопрос знатным самбоводам
требуется из скрипта (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>"
Спасибо!
Я выкрутился в результате почти аналогично.
Вот часть скрипта:
inlist=`ls $mskin`
for fname in $inlist; do
smbclient $sharename -I $shareIP -U $shareuser -c "prompt; del $fname" $sharepass
done
А насчет предрассудков с символом $ в имени - это мой косяк :) Дело было не в нем, а в количестве символов "_", я их не досчитал в маске, потому файлы и не находились ;)