Открытие документов на cifs/smb шаре вордом в wine

Вопросы настройки, запуск любых Windows-программ, кроме игр

Модератор: Модераторы разделов

ХимТех
Сообщения: 92

Открытие документов на cifs/smb шаре вордом в wine

Сообщение ХимТех »

Здравствуйте.
Есть такая задача. Нужно что пользователь заходил на cifs/smb шару, нажимал на файл, например doc, и он открывался на редактирование Word-ом, который установлен локально в wine.

Что я пытался сделать:
Примонтировал cifs/smb ресурс:
//server/public on /mnt/public type cifs (rw,mand)
В wine сделал диск сетевой:
h: -> /mnt/public/

Если открыть word, открыть диск, можно открыть документ.
А как сделать что человек зашел в nautilus, нажал на документ и он открылся Word?
Спасибо сказали:
kapLAN
Сообщения: 21
ОС: FedoraCore

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение kapLAN »

1. написать маленький скрипт run_with_msword типа:

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

#!/bin/bash

wine "$1"

2. сделать chmod 700 run_with_msword
3. затем ассоциировать расширение doc с этим скриптом
Спасибо сказали:
stampoon
Сообщения: 702
ОС: Mandrake/Mandriva Cooker

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение stampoon »

нет, не так :)

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

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение drBatty »

kapLAN писал(а):
21.07.2009 23:35
2. сделать chmod 700 run_with_msword
3. затем ассоциировать расширение doc с этим скриптом

$

drb@localhost:~$ cat >test.mce #!/usr/bin/mcedit тестовый файл drb@localhost:~$ chmod +x test.mce drb@localhost:~$ ./test.mce

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

Скоро придёт
Осень
Спасибо сказали:
stampoon
Сообщения: 702
ОС: Mandrake/Mandriva Cooker

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение stampoon »

делаем вот такой скрипт

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

#!/bin/bash
wine 'C:\Program Files\Microsoft Office\Office\winword.exe' "$(winepath -w "$@")"

и ассоциируем с ним .doc
//UPD:внес поправку.
Интеллект — это способность избегать выполнения работы, но так, чтобы она при этом была сделана.
Спасибо сказали:
ХимТех
Сообщения: 92

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение ХимТех »

Невозможно открыть документ, так пользователь не обладает достаточными полномочиями.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Спасибо сказали:
stampoon
Сообщения: 702
ОС: Mandrake/Mandriva Cooker

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение stampoon »

ХимТех
и правда, напортачил чуток. сейчас поправлю :)
Интеллект — это способность избегать выполнения работы, но так, чтобы она при этом была сделана.
Спасибо сказали:
Аватара пользователя
vbPadre
Сообщения: 270
Статус: Синеглазый линуксоид
ОС: Archlinux current

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение vbPadre »

я подправил, у меня выглядит следующим образом:

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

#!/bin/bash

env WINEPREFIX="/home/serge/.wine" wine "C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE" "$(winepath -w "$@")"
Dell latitude X1 + Toshiba A45-S150 + Toshiba L300-110 + NoName PC = ArchLinux
free-torrents.org банит пользователей
Спасибо сказали:
stampoon
Сообщения: 702
ОС: Mandrake/Mandriva Cooker

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение stampoon »

#!/bin/bash
wine 'C:\Program Files\Microsoft Office\Office\winword.exe' "$(winepath -w "$@")"

UPD: опоздал :)
Интеллект — это способность избегать выполнения работы, но так, чтобы она при этом была сделана.
Спасибо сказали:
ХимТех
Сообщения: 92

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение ХимТех »

Сетевой SMB ресрус смонтирован в /mnt/public
winepath -w /mnt/public/ерофееву.doc
H:\ерофееву.doc

И:
winepath -w smb://fileserver/public/ерофееву.doc
D:\smb:\\fileserver\public\ерофееву.doc - а должен быть "H:\ерофееву.doc"

И еще проблема.
Если заходить на SMB ресурс через nautilus, то пользователь "я,я и др" и права 644.
Если заходить на SMB ресурс через /mnt/public, то пользователь "root, nobody и др" и права 644.

Как сделать права, чтобы можно было редактировать?
smb.conf:

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

[global]
    workgroup = test
    server string = Файловый сервер
    netbios name = FileServer
    interfaces = lo eth0 eth1
    hosts allow = 127. 192.168.35.
    security = share
    passdb backend = tdbsam
    wins server = 192.168.35.3
    dns proxy = yes
    cups options = raw
    guest ok = yes
[public]
    path = /opt/samba/public
    writeable = yes
    browseable = yes
    guest ok = yes

/etc/fstab:

\\192.168.170.4\2gis /mnt/2gis cifs username=guest,password=guest 0 0

rpm -q etercifs
etercifs-4.3.7-eter2centos
Спасибо сказали:
stampoon
Сообщения: 702
ОС: Mandrake/Mandriva Cooker

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение stampoon »

ХимТех писал(а):
30.07.2009 05:56
winepath -w smb://fileserver/public/ерофееву.doc
D:\smb:\\fileserver\public\ерофееву.doc - а должен быть "H:\ерофееву.doc"

ну а вы чего хотели? winepath не знает всяких там smb://
ХимТех писал(а):
30.07.2009 05:56
Как сделать права, чтобы можно было редактировать?

man mount
man umask
Интеллект — это способность избегать выполнения работы, но так, чтобы она при этом была сделана.
Спасибо сказали:
ХимТех
Сообщения: 92

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение ХимТех »

Пробовал такую сточку:
//192.168.1.2/work /home/dbott/work -o username=guest,password=guest,uid=id_пользователя,mask=000,user - работает, но если надо нескольким пользователям обращаться в этот смонтированный ресурс? каждый монтирует что ли?
Спасибо сказали:
stampoon
Сообщения: 702
ОС: Mandrake/Mandriva Cooker

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение stampoon »

ХимТех писал(а):
03.08.2009 07:32
но если надо нескольким пользователям обращаться в этот смонтированный ресурс? каждый монтирует что ли?

ну а почему бы собственно и нет?
Интеллект — это способность избегать выполнения работы, но так, чтобы она при этом была сделана.
Спасибо сказали:
ХимТех
Сообщения: 92

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение ХимТех »

Нужно запустить word и передать ему файл

Пример:

/opt/bin/word smb://fileserver/public/контингент09.doc

Сам скрипт:

"
#!/bin/bash
echo $@
param1=`echo "$@" | cut -d ":" -f 2`
echo "$param1" param1
param2=`echo "$(winepath -w "$param1")"`
echo "$param2" param2
param3=`echo "$param2" | awk -F: '{print $2}'`
echo "$param3" param3
param4=`echo "$param2" | awk -F: '{print $1}'`
echo "$param4" param4
param5=`echo "$param3" | awk -F \ '{print $2}'`
echo "$param5"
#wineole "C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE" "$(winepath -w "$param2")"
#echo "wineole "C:\Program Files\Microsoft Office\OFFICE112\WINWORD.EXE" "$(winepath -w "$param2")""
"

Пока не могу сделать это: "param5=`echo "$param3" | awk -F \ '{print $2}'`"
Нужно отделить от "F:\fileserver\public\контингент09.doc" "контингент09.doc"

Вот что получается:

"
smb://fileserver/public/контингент09.doc
//fileserver/public/контингент09.doc param1
F:\fileserver\public\контингент09.doc param2
\fileserver\public\контингент09.doc param3
F param4
и ошибка
"

Как правильно записать "param5=`echo "$param3" | awk -F \ '{print $2}'`" ??
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение drBatty »

ХимТех писал(а):
01.02.2010 14:45
Нужно отделить от "F:\fileserver\public\контингент09.doc" "контингент09.doc"

Shell

$ echo "F:\fileserver\public\контингент09.doc" | sed 's/.*\\// контингент09.doc
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

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

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение ХимТех »

Это конечно костыль, но хотел взять переменную "param4" - это "F"
и к ней привязать переменную "param5" - это "контингент09.doc"

Чтобы Word получал файл в виде F:/контингент09.doc

В скрипте так:
...
param5=`echo "$param3" | sed 's/.*\\//'`
echo "$param5"
...

Выдает
"sed: -e выражение #1, символ 7: незавершенная команда `s'"

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

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение drBatty »

ХимТех писал(а):
02.02.2010 08:53
Это конечно костыль, но хотел взять переменную "param4" - это "F"
и к ней привязать переменную "param5" - это "контингент09.doc"

Чтобы Word получал файл в виде F:/контингент09.doc

ХимТех писал(а):
02.02.2010 08:53
Выдает
"sed: -e выражение #1, символ 7: незавершенная команда `s'"

это у вас кавычки глючат. которые ``
используйте новую конструкцию баша:

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

param5=$(echo "$param3" | sed 's/.*\\//')


вы бы написали по-русски, что именно надо получить, тогда-бы могли рассчитывать на готовое решение.
если из
F:\fileserver\public\контингент09.doc
надо получить
F:/контингент09.doc
то это довольно просто

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

echo "F:\fileserver\public\контингент09.doc" | sed -rn 's|^([A-Z]):.*\\([^\]+)$|\1:/\2|p'

если строка не является корректным вендовым путём, то результат - пустая строка. Иначе результат -
F:/контингент09.doc
(в этом случае)
а разбивать выражения на параметры... очень сложно и ведёт к ошибкам.
Если что непонятно с sed - спрашивайте...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

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

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение ХимТех »

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

#!/bin/bash
echo $@
param1=`echo "$@" | cut -d ":" -f 2`
echo "$param1" param1
param2=`echo "$(winepath -w "$param1")"`
echo "$param2" param2
param3=`"$param2" | sed -rn 's|^([A-Z]):.*\\([^\]+)$|\1:/\2|p'`
echo "$param3" param3
#wineole "C:\Program Files\Microsoft Office\OFFICE11\WINWORD.EXE" "$(winepath -w "$param3")"
#echo "wineole "C:\Program Files\Microsoft Office\OFFICE112\WINWORD.EXE" "$(winepath -w "$param3")""

Но не работает. опять где-то кавычка не та.
Вот вывод

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

 /opt/bin/word smb://fileserver/public/контингент09.doc
smb://fileserver/public/контингент09.doc
//fileserver/public/контингент09.doc param1
F:\fileserver\public\контингент09.doc param2
/opt/bin/word: line 7: F:\fileserver\public\контингент09.doc: команда не найдена
sed: -e выражение #1, символ 31: Непарная ) или \)
 param3
Спасибо сказали:
YYY
Сообщения: 66
ОС: slitaz

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение YYY »

У меня ворд-вьювер понимает пути типа
file:///X:/sdas/asdas/sdas.doc

Может и ворд будет
только пробелы надо на
%20
заменить и все.
А так работает вроде :)
И слеши менять не надо
winepatch c кавычками что-то не так работает
(пробовал баг-репорт писать)
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение drBatty »

ХимТех писал(а):
02.02.2010 14:17
param3=`"$param2" | sed -rn 's|^([A-Z]):.*\\([^\]+)$|\1:/\2|p'`

я для кого пишу-то :(
param3=$(echo "$param2" | sed -rn 's|^([A-Z]):.*\\([^\]+)$|\1:/\2|p')

PS: я вообще не понял этого кода.
можно рассказать ПО-РУССКИ:
типа:
У меня есть параметры командностроки такие ....
я хочу в скрипте выполнить команду wine ....
:angry:
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

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

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение ХимТех »

Надо получить из пути "smb://fileserver/public/контингент09.doc" путь "Z:\контингент09.doc"
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение drBatty »

ХимТех писал(а):
04.02.2010 11:54
"smb://fileserver/public/контингент09.doc"

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

$ echo "smb://fileserver/public/контингент09.doc" | sed -r 's|.*/([^/]+)$|Z:\\\1|'
Z:\контингент09.doc


PS: объяснение: здесь ищется последовательность символов без '/', перед которой есть '/' в конце строки, у нас это /контингент09.doc, ну а далее, перед найденной последовательностью ставится Z:\
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

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

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение ХимТех »

Z:\ сам "winpath -w" подставляет.

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

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение drBatty »

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

$ echo "smb://fileserver/public/контингент09.doc" | sed -r 's|.*/([^/]+)$|\\\1|'
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

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

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение ХимТех »

Теперь встала другая проблема...

Файлопомойка примонтирована так:
//IP/public on /mnt/public type cifs (rw,mand,noexec,nosuid,nodev)

Диск D это "public"
#ls -l /home/test/.wine/dosdevices/
d: -> /mnt/public/

А winepath вот что выдает:

#winepath -w \контингент09.doc
E:\контингент09.doc

Почему так...
Спасибо сказали:
YYY
Сообщения: 66
ОС: slitaz

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение YYY »

У меня работает так %)

открываю как

excelview file

Z: как /home/user

.wine в .wine-ms - ну чтоб отдельно было

+++++++++ excelview ++++
#!/bin/bash

MYPATH=`pwd`
MYSTR=""
STRL=`expr length "$1"`

if [ $STRL -gt 2 ]; then
if [ `expr index "$1" '//'` -eq 1 ]; then
MYSTR=$1 #полный путь
elif [ `expr index "$1" '~//'` -eq 1 ]; then
MYSTR=`expr substr "$1" 2 "$STRL"` #путь от домашнего каталога
MYSTR="$HOME$MYSTR"
else
MYSTR="$MYPATH/$1" # только имя файла или относительный путь
fi
MYSTR="${MYSTR/$HOME/z:}" # замена на Z: Если Z как домашний каталог пользователя
#MYSTR="z:$MYSTR" # замена на Z: Если Z как корень
MYSTR="${MYSTR/ /%20}" #пробелы
MYSTR="file:///$MYSTR"
fi

WINEPREFIX=~/.wine-ms wine ~/.wine-ms/drive_c/"Program Files"/"Microsoft Office"/OFFICE11/XLVIEW.EXE $MYSTR
+++++++++ excelview ++++
Спасибо сказали:
ХимТех
Сообщения: 92

Re: Открытие документов на cifs/smb шаре вордом в wine

Сообщение ХимТех »

Во блин...
Спасибо сказали: