Подключили файловый облачный сервер Nextcloud. Все вроде бы хорошо, файлы доступны с любого устройства, через приложение и через веб-интерфейс. Скорость иногда печалит, особенно при открытии каталога с большим количеством файлов, но с этим вряд ли что-то можно сделать.
Возникла следующая проблема - одной из полезных функций сервера является то, что облачную папку можно подключить по WebDav, как сетевой диск. И тут проблем как бы нет, но Windows (в моем случае, 10) после перезагрузки не подключает диск автоматически. Я не глубокий специалист в этом, но тем не менее заметил несколько моментов:
При перезапуске службы "Веб-клиент" соединение восстанавливается. Кстати, по дефолту эта служба почему-то выключена.
Попытка подключения происходит один раз, в момент, когда компьютер еще не увидел сеть, и, соответственно, ничего не подключается.
В общем, встала задача написать скрипт, который будет помещен в автозагрузку. При включении компьютера он будет мониторить состояние сети, и когда хост nextcloud станет пинговаться, подключит сетевой диск и перезапустит службу WebClient.
Одним файлом сделать пока не получилось, и вот почему:
когда мы размонтируем или монтируем диск, эта команда должна выполняться от имени обычного пользователя. Если выполнить ее, как администратор, то пользователь этот диск не увидит
перезапуск службы, напротив, должен запускаться с правами админа, так же как и работа с реестром (именно так я собирался добавлять скрипт в автозагрузку)
Файл connect.cmd, который будет добавляться в автозагрузку:
@echo off net use Y: /delete start "" powershell -command "&{start-process -filepath C:autoloadWC_register.cmd -verb RunAs}" %* :LOOP ping -n 1 mynextcloudhost.ru | find "TTL=" >nul if errorlevel 1 ( ping 127.0.0.1 -n 10 > nul & goto LOOP ) else ( start "" powershell -command "&{start-process -filepath C:autoloadWC_restart.cmd -verb RunAs}" %* & goto connect ) :connect Set Login=User121 Set Password=jkhe3re# net use Y: https://mynextcloudhost.ru/remote.php/dav/files/%Login% /user:%Login% %Password% /persistent:no if errorlevel 1 ping 127.0.0.1 -n 10 > nul & goto connect
Да, я захардкодил путь к скрипту, и это нехорошо. Но это я добавил в список дел, с которыми буду разбираться потом.
В самом начале демонтируется том Y, если он подключен. Запускается скрипт WC_register.cmd, в котором я сделал проверку, есть ли наш скрипт в автозагрузке. Если нет, добавляем в реестр нужную запись. Скрипт запускается с правами администратора.
Файл WC_register.cmd:
@echo off For /F "tokens=1" %%a in (′reg query "HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun" /v "Netcloud"′) do set regpath=%%a If DEFINED regpath ( exit ) Else ( reg add "HKLMSOFTWAREMicrosoftWindowsCurrentVersionRun" /v Netcloud /t REG_SZ /d "C:autoloadconnect.cmd" ) exit
Потом мы в цикле пингуем наш хост, пока не добьемся успеха. В этом случае мы вызываем (опять же с правами админа) скрипт WC_restart.cmd, который перезапускает WebClient и передаем выполнение скрипта подпрограмме connect.
Файл WC_restart.cmd:
@echo off net stop webclient net start webclient exit
Потом заново монтируется сетевой диск на томе Y.
Вот, в принципе, и все. Скрипт работает, и это сейчас самое главное. Немного раздражает, что после перезагрузки компа всплывают prompt-окошки. Это надо будет "допилить" потом. Еще в планах сделать скрипт универсальным, поскольку пользователей много, а хардкодить имя и пароль, а также путь к скрипту - не комильфо. Короче, пока так, а потом буду доделывать.
P.S. Визивиг режет обратный слэш ( Внимательней с урлами и путем к реестру.
blackrid
03/11/2020
Подводные камни WebDav
Подключили файловый облачный сервер Nextcloud. Все вроде бы хорошо, файлы доступны с любого устройства, через приложение и через веб-интерфейс. Скорость иногда печалит, особенно при открытии каталога с большим количеством файлов, но с этим вряд ли что-то можно сделать.
Возникла следующая проблема - одной из полезных функций сервера является то, что облачную папку можно подключить по WebDav, как сетевой диск. И тут проблем как бы нет, но Windows (в моем случае, 10) после перезагрузки не подключает диск автоматически. Я не глубокий специалист в этом, но тем не менее заметил несколько моментов:
В общем, встала задача написать скрипт, который будет помещен в автозагрузку. При включении компьютера он будет мониторить состояние сети, и когда хост nextcloud станет пинговаться, подключит сетевой диск и перезапустит службу WebClient.
Одним файлом сделать пока не получилось, и вот почему:
Файл connect.cmd, который будет добавляться в автозагрузку:
Да, я захардкодил путь к скрипту, и это нехорошо. Но это я добавил в список дел, с которыми буду разбираться потом.
В самом начале демонтируется том Y, если он подключен. Запускается скрипт WC_register.cmd, в котором я сделал проверку, есть ли наш скрипт в автозагрузке. Если нет, добавляем в реестр нужную запись. Скрипт запускается с правами администратора.
Файл WC_register.cmd:
Потом мы в цикле пингуем наш хост, пока не добьемся успеха. В этом случае мы вызываем (опять же с правами админа) скрипт WC_restart.cmd, который перезапускает WebClient и передаем выполнение скрипта подпрограмме connect.
Файл WC_restart.cmd:
Потом заново монтируется сетевой диск на томе Y.
Вот, в принципе, и все. Скрипт работает, и это сейчас самое главное. Немного раздражает, что после перезагрузки компа всплывают prompt-окошки. Это надо будет "допилить" потом. Еще в планах сделать скрипт универсальным, поскольку пользователей много, а хардкодить имя и пароль, а также путь к скрипту - не комильфо. Короче, пока так, а потом буду доделывать.
P.S. Визивиг режет обратный слэш ( Внимательней с урлами и путем к реестру.