Открытие документов на cifs/smb шаре вордом в wine
Модератор: Модераторы разделов
-
- Сообщения: 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?
Есть такая задача. Нужно что пользователь заходил на cifs/smb шару, нажимал на файл, например doc, и он открывался на редактирование Word-ом, который установлен локально в wine.
Что я пытался сделать:
Примонтировал cifs/smb ресурс:
//server/public on /mnt/public type cifs (rw,mand)
В wine сделал диск сетевой:
h: -> /mnt/public/
Если открыть word, открыть диск, можно открыть документ.
А как сделать что человек зашел в nautilus, нажал на документ и он открылся Word?
-
- Сообщения: 21
- ОС: FedoraCore
Re: Открытие документов на cifs/smb шаре вордом в wine
1. написать маленький скрипт run_with_msword типа:
2. сделать chmod 700 run_with_msword
3. затем ассоциировать расширение doc с этим скриптом
Код: Выделить всё
#!/bin/bash
wine "$1"
2. сделать chmod 700 run_with_msword
3. затем ассоциировать расширение doc с этим скриптом
-
- Сообщения: 702
- ОС: Mandrake/Mandriva Cooker
Re: Открытие документов на cifs/smb шаре вордом в wine
нет, не так 
тут нужен winepath

тут нужен winepath
Интеллект — это способность избегать выполнения работы, но так, чтобы она при этом была сделана.
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Открытие документов на cifs/smb шаре вордом в wine
$
drb@localhost:~$ cat >test.mce
#!/usr/bin/mcedit
тестовый файл
drb@localhost:~$ chmod +x test.mce
drb@localhost:~$ ./test.mce
как видите, оболочка сама умеет ассоциировать файлы

-
- Сообщения: 702
- ОС: Mandrake/Mandriva Cooker
Re: Открытие документов на cifs/smb шаре вордом в wine
делаем вот такой скрипт
и ассоциируем с ним .doc
//UPD:внес поправку.
Код: Выделить всё
#!/bin/bash
wine 'C:\Program Files\Microsoft Office\Office\winword.exe' "$(winepath -w "$@")"
и ассоциируем с ним .doc
//UPD:внес поправку.
Интеллект — это способность избегать выполнения работы, но так, чтобы она при этом была сделана.
-
- Сообщения: 92
Re: Открытие документов на cifs/smb шаре вордом в wine
Невозможно открыть документ, так пользователь не обладает достаточными полномочиями.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- Сообщения: 702
- ОС: Mandrake/Mandriva Cooker
Re: Открытие документов на cifs/smb шаре вордом в wine
ХимТех
и правда, напортачил чуток. сейчас поправлю
и правда, напортачил чуток. сейчас поправлю

Интеллект — это способность избегать выполнения работы, но так, чтобы она при этом была сделана.
-
- Сообщения: 270
- Статус: Синеглазый линуксоид
- ОС: Archlinux current
Re: Открытие документов на cifs/smb шаре вордом в wine
я подправил, у меня выглядит следующим образом:
Код: Выделить всё
#!/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 банит пользователей
free-torrents.org банит пользователей
-
- Сообщения: 702
- ОС: Mandrake/Mandriva Cooker
Re: Открытие документов на cifs/smb шаре вордом в wine
#!/bin/bash
wine 'C:\Program Files\Microsoft Office\Office\winword.exe' "$(winepath -w "$@")"
UPD: опоздал
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:
/etc/fstab:
\\192.168.170.4\2gis /mnt/2gis cifs username=guest,password=guest 0 0
rpm -q etercifs
etercifs-4.3.7-eter2centos
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
-
- Сообщения: 702
- ОС: Mandrake/Mandriva Cooker
Re: Открытие документов на cifs/smb шаре вордом в wine
ну а вы чего хотели? winepath не знает всяких там smb://
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 - работает, но если надо нескольким пользователям обращаться в этот смонтированный ресурс? каждый монтирует что ли?
//192.168.1.2/work /home/dbott/work -o username=guest,password=guest,uid=id_пользователя,mask=000,user - работает, но если надо нескольким пользователям обращаться в этот смонтированный ресурс? каждый монтирует что ли?
-
- Сообщения: 702
- ОС: Mandrake/Mandriva Cooker
Re: Открытие документов на cifs/smb шаре вордом в wine
ну а почему бы собственно и нет?
Интеллект — это способность избегать выполнения работы, но так, чтобы она при этом была сделана.
-
- Сообщения: 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}'`" ??
Пример:
/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}'`" ??
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Открытие документов на cifs/smb шаре вордом в wine
Shell
$ echo "F:\fileserver\public\контингент09.doc" | sed 's/.*\\//
контингент09.doc
-
- Сообщения: 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 шару, но я пока его не знаю
и к ней привязать переменную "param5" - это "контингент09.doc"
Чтобы Word получал файл в виде F:/контингент09.doc
В скрипте так:
...
param5=`echo "$param3" | sed 's/.*\\//'`
echo "$param5"
...
Выдает
"sed: -e выражение #1, символ 7: незавершенная команда `s'"
Может есть и другой способ, открытия документа в ворде через smb шару, но я пока его не знаю
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Открытие документов на cifs/smb шаре вордом в wine
это у вас кавычки глючат. которые ``
используйте новую конструкцию баша:
Код: Выделить всё
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 - спрашивайте...
-
- Сообщения: 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
-
- Сообщения: 66
- ОС: slitaz
Re: Открытие документов на cifs/smb шаре вордом в wine
У меня ворд-вьювер понимает пути типа
file:///X:/sdas/asdas/sdas.doc
Может и ворд будет
только пробелы надо на
%20
заменить и все.
А так работает вроде
И слеши менять не надо
winepatch c кавычками что-то не так работает
(пробовал баг-репорт писать)
file:///X:/sdas/asdas/sdas.doc
Может и ворд будет
только пробелы надо на
%20
заменить и все.
А так работает вроде

И слеши менять не надо
winepatch c кавычками что-то не так работает
(пробовал баг-репорт писать)
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Открытие документов на cifs/smb шаре вордом в wine
я для кого пишу-то

param3=$(echo "$param2" | sed -rn 's|^([A-Z]):.*\\([^\]+)$|\1:/\2|p')
PS: я вообще не понял этого кода.
можно рассказать ПО-РУССКИ:
типа:
У меня есть параметры командностроки такие ....
я хочу в скрипте выполнить команду wine ....

-
- Сообщения: 92
Re: Открытие документов на cifs/smb шаре вордом в wine
Надо получить из пути "smb://fileserver/public/контингент09.doc" путь "Z:\контингент09.doc"
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Открытие документов на cifs/smb шаре вордом в wine
Код: Выделить всё
$ echo "smb://fileserver/public/контингент09.doc" | sed -r 's|.*/([^/]+)$|Z:\\\1|'
Z:\контингент09.doc
PS: объяснение: здесь ищется последовательность символов без '/', перед которой есть '/' в конце строки, у нас это /контингент09.doc, ну а далее, перед найденной последовательностью ставится Z:\
-
- Сообщения: 92
Re: Открытие документов на cifs/smb шаре вордом в wine
Z:\ сам "winpath -w" подставляет.
Если можете, напишите как сделать "/контингент09.doc"
Заранее спасибо.
Если можете, напишите как сделать "/контингент09.doc"
Заранее спасибо.
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Открытие документов на cifs/smb шаре вордом в wine
Код: Выделить всё
$ echo "smb://fileserver/public/контингент09.doc" | sed -r 's|.*/([^/]+)$|\\\1|'
-
- Сообщения: 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
Почему так...
Файлопомойка примонтирована так:
//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
Почему так...
-
- Сообщения: 66
- ОС: slitaz
Re: Открытие документов на cifs/smb шаре вордом в wine
У меня работает так %)
открываю как
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 ++++
открываю как
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