Решил немного усовершенствовать свой powershell скрипт, который реализует охрану при помощи wifi-камеры. Решил записывать на ftp-сервер видео-поток с камеры, когда дома никого нет. То есть кроме оповещения по email (когда вдруг что-то зашевелилось в кадре), видео будет постоянно записываться.
Для этого мне понадобилось подключить ftp-сервер, так, чтобы он стал доступен из командной строки как диск или папка.
Подключение FTP стандартными средствами Windows
В Windows можно стандартными средствами подключить ftp как сетевой диск, но такой сетевой диск будет работать только из проводника (explorer), в командной строке он будет не доступен.
Опишу, как стандартными средствами подключить ftp в качестве сетевого диска.
Жмем правой кнопкой мышки на иконке "Мой компьютер" и выбираем в контекстном меню пункт "Подключить сетевой диск...". В открывшемся окне жмем на "Подключение к веб-сайту, на котором вы можете хранить документы и изображения":
В следующих двух окнах жмем по кнопка "Далее" и указываем адрес ftp-сервера:
Снова жмем кнопку далее, снимаем галочку возле "Анонимный вход" и указываем ftp-логин, жмем кнопки далее, готово.
В конце у Вас запросит пароль, вводим его и ставим галочку "Сохранить пароль", чтобы каждый раз его не вводить.
Теперь в проводнике можно заходить на ftp-сервер как на обычный сетевой диск, без каких-либо ftp-клиентов. Но такой вариант подключения ftp в качестве сетевого диска мне не подошел, так как не могу к нему обращаться через командную строку.
Подключение FTP через FTPUSE
Мою проблему решила утилита ftpuse - ferrobackup.com/ftpuse
После установки утилиты чтобы подключить сетевой диск нужно ввести команду (покажу на своем примере):
ftpuse U: ftp.elims.org.ua ТутПечатаемСвойПароль /USER:elimS
В работе программы есть два нюанса:
- на подключенном диске всегда будет отображаться 512 МБ свободного места, не зависимо от того, сколько там его осталось. Но мне это не мешает.
- если закрыть окно командной строки из которого запускался FTPUSE, то диск размонтируется. Мне это не мешает, так консоль у меня всегда запущена. Если же окно все-таки хочется скрыть, то запускаем FTPUSE вот такой командой:
powershell -WindowStyle Hidden ftpuse u: ftp.elims.org.ua ТутПечатаемСвойПароль /user:elimS
Ну и краткая информация о параметрах FTPUSE:
FTPUSE devicename [ftphostname[/remotepath] [password]]
[/USER:username]
[/NOPASSIVE]
[/OWNERACCESSONLY]
[/PORT:portnumber]
[/DEBUG]
[[/DELETE]]
- devicename - имя подключаемого/отключаемого диска
- ftphostname - адрес FTP сервера
- remotepath - имя удаленной папки, которая будет использоваться родительская папка создаваемого диска
- password - пароль для подключения к FTP серверу
- /USER - логин на FTP сервере
- /NOPASSIVE - активное соединение с FTP сервером (active mode)
- /OWNERACCESSONLY - делает созданный диск доступным только из приложения запустившем FTPUSE
- /PORT - номер порта FTP-сервера. Порт 21 используется по умолчанию.
- /DEBUG - отладка.
- /DELETE - удаление смонтированого диска.
Далее скриншот подключенных дисков, тот, который з буквой "U" подключен через ftpuse и доступен из командной строки как обычный локальный диск:
После монтирования диска все кирилические символы в названиях файлов превращаются в абракадабру. Нет ли способа это исправить?
Честно говоря не знаю, я отказался от данной практики, так как со временем понял что подключение фтп в качестве диска не стабильно работает.
Бесполезная программа, сколько не бадался, мапить ftp как диск не хочет и все. Через проводник все работает, но нужен способ для использования в скриптах.
Таз, всё отлично маппится и работает.
значит у вас косяки в командной строке с параметрами
А как оно работает с FTPS
1. Запускать консоль с правами админа. Иначе диск не мапится.
2. Юзать ключ /HIDE. Иначе при выходе из консоли примапленный диск отваливается.
Юзать ключ /HIDE.
Помогите = это как?
Юзать ключ /HIDE.
Это как?
Даю
COPY c:\work\lynxwage\katri.ini U:\
плучаю;
Параметер задан неверно
А через проводник — нет места для 255 байт
Входящий в состав утилиты ftpuse драйвер dokan.sys как минимум на Windows Server 2008 R2 может вызывать BSOD с кодом 0x000000C2
Просто для информации.