Запись камеры на FTP ресурс

Posted by

Задача: Рассмотреть как будет вестись запись с IP камеры D-Link на FTP ресурс под управлением Ubuntu Trusty с сервисом ProVTPD

Т.к. я все еще тестирую различные настройки, сервисы, оборудование мне для моей организации «Умного дома», нужно иметь наработки в различных областях и поведениях. И вот мне пришла задумка, посмотреть в режиме реального времени, а может ли IP-камера посылать видеопоток прямо на FTP ресурс, какие нюансы это есть и все ли будет работать нормально. Об этом и многом другом см. данную заметку. А вообще все пишется в первую очередь для себя и что интересно мне.

Итак система Ubuntu Trusty Server amd64:

ekzorchik@trusty:~$ sudo rm -Rf /var/lib/apt/lists

ekzorchik@trusty:~$ sudo apt-get update && sudo apt-get upgrade -y

ekzorchik@trusty:~$ sudo apt-get install linux-generic-lts-xenial linux-image-generic-lts-xenial -y

Сервис ProVTPD: 172.33.33.4

IP Camera: 172.33.33.12

Сервис FTP поднят по заметке:

ekzorchik@srv-trusty:~$ sudo mkdir /var/www/ftp/user2

ekzorchik@srv-trusty:~$ sudo ftpasswd --passwd --file=/etc/proftpd/ftpd.passwd --name=camera --shell=/bin/false --home=/var/www/ftp/user2 --uid=107 —gid=33

ekzorchik@srv-trusty:~$ sudo bash -c "cat /etc/proftpd/ftpd.passwd"

wp:$1$jeQFW80S$Vld4MW1ssBYJw.6oZ6Euv1:107:33::/var/www/ftp/user1:/bin/false

camera:$1$W6ZV9Hmy$.CBCBD6iIsBTNfraOAPQ11:107:33::/var/www/ftp/user2:/bin/false

ekzorchik@srv-trusty:~$ sudo chown -R 103:33 /var/www/ftp/user2

ekzorchik@srv-trusty:~$ ftp localhost 21

ftp: connect to address ::1: Connection refused

Trying 127.0.0.1…

Connected to localhost.

220 ProFTPD 1.3.5rc3 Server (srv-trusty) [127.0.0.1]

Name (localhost:ekzorchik): camera

331 Password required for camera

Password: Aa1234567

230 User camera logged in

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>

Теперь перехожу к настройкам IP камеры, чтобы узнать ее адрес подключаюсь к своему домашнему роутеру Mikrotik и узнаю IP адрес.

http://172.33.33.12

  • user: admin
  • pass: Aa1234567

Страница настройки обработки события включает 4 подраздела. • Event (Событие) • Server (Сервер) • Media (Данные) • Recording (Запись)

На заметку: Можно создать не более 2 событий, не более 5 серверов и не более 5 полей для данных.

Setup → Event Setup (Настройка события)

(Server) Add →

  • Server Name: trusty
  • FTP: отмечаю галочкой
  • Server address: 172.33.33.4
  • Port: 21
  • User name: camera
  • Password: Aa1234567
  • Remote folder name: /

и нажимаю Save Settings, затем перехожу в настроенный профиль и нажимаю Test, но в ответ получаю лишь Test Error. Я что только не перепробывал результат ошибка, логи на камере вообще на этот счет молчат.

А если поднять сервис SAMBA на srv-trusty?

ekzorchik@srv-trusty:~$ sudo apt-get install samba -y

ekzorchik@srv-trusty:~$ sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.backup

ekzorchik@srv-trusty:~$ sudo nano /etc/samba/smb.conf

server role = standalone server

# map to guest = bad user

map to guest = bad password

# опции относящиеся к printers & profiles & print
комментирую посредством символа решетки «#» они не нужны

[camera]

path = /media/camera

guest ok = yes

read only = no

create mask = 0777

directory mask = 0777

После не забываем сохранить внесенные изменения.

На заметку: если стоит map to guest = bad user то будет запрос на ввод имени учетной записи и пароля, а для map to guest = bad password такого запроса не будет.

Проверяю конфигурационный файл на ошибки прежде чем перезапускать сервис SAMBA:

ekzorchik@srv-trusty:~$ sudo testparm

Load smb config files from /etc/samba/smb.conf

rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)

WARNING: The "syslog" option is deprecated

Processing section "[homes]"

Processing section "[pdf]"

Loaded services file OK.

Server role: ROLE_STANDALONE

Так нужно изменить значение rlimit_max:

ekzorchik@srv-trusty:~$ sudo nano /etc/security/limits.conf

*<TAB><TAB>-<TAB>nofile<TAB>16385

Для принятия изменений нужно сделать Logoff & Logon текущей сессии.

Проверяю снова на наличии ошибок — ошибок нет.

ekzorchik@srv-trusty:~$ sudo chown -R nobody:nogroup /media/camera/

Перезапускаю сервис SAMBA:

ekzorchik@srv-trusty:~$ sudo service smbd restart

Теперь настройки на камере

Setup — Event Setup

  • Server name: trusty
  • Network storage: отмечаю галочкой
  • Network storage location: \\172.33.33.4\camera
  • Workgroup: WORKGROUP

и нажимаю Save Settings, затем возвращаюсь к профилю trusty и нажимаю Test и в ответ получаю «Test Ok», а в логах камеры: Status — Log

3. 2017-10-31 20:47:52 admin FROM 172.33.33.7 SET Network Storage Location : \\172.33.33.4\camera\(null)

4. 2017-10-31 20:47:52 admin FROM 172.33.33.7 SET EVENT SERVER 1 ; Name : trusty, Type : Network storage

5. 2017-10-31 20:47:52 admin FROM 172.33.33.7 LOGIN OK

ekzorchik@srv-trusty:~$ cat /media/camera/test.txt

The Result of Server Test of Your IP Camera.

Так, а если samba сервис настроить на использование авторизации:

ekzorchik@srv-trusty:~$ sudo nano /etc/samba/smb.conf

workgroup = WORKGROUP

server role = standalone server

map to guest = bad user

#map to guest = bad password

[camera]

comment = My backup folder

path = /media/camera

read only = no

browseable = yes

guest ok = yes

create mask = 0700

valid users = camera

hide files = /$RECYCLE.BIN/desktop.ini/lost+found/Thumbs.db/

ekzorchik@srv-trusty:~$ sudo addgroup smbshare

Adding group `smbshare' (GID 1001) ...

Done.

ekzorchik@srv-trusty:~$ sudo useradd -M -s /bin/false camera

ekzorchik@srv-trusty:~$ sudo smbpasswd -a camera

New SMB password:

Retype new SMB password:

Added user camera.

ekzorchik@srv-trusty:~$ sudo chown -R nobody:smbshare /media/camera/

ekzorchik@srv-trusty:~$ sudo chmod -R 0770 /media/camera/

Теперь настройки на камере

Setup — Event Setup

  • Server name: trusty
  • Network storage: отмечаю галочкой
  • Network storage location: \\172.33.33.4\camera
  • Workgroup: WORKGROUP

и нажимаю Save Settings, затем возвращаюсь к профилю trusty и нажимаю Test и в ответ получаю «Test Ok», а в логах камеры: Status — Log

Как видно, нет разницы настройка сервиса Samba, как без аутентификации так и с аутентификацией, главное что сетевая камера D-Link DCS-2103 видит его.

Теперь настройки чтобы включить запись камеры всего движения которое попадает в действие объектива. Делается это все также в модуле Event Setup

Настройки (Media) — Add

  • Media name: Media1
  • Video Clip: отмечаю галочкой
  • Pre-event recording: 3 (Seconds)
  • Maximum duration: 100 (Seconds)
  • Maximum file size: 50000 (Kbytes)
  • File Name Prefix: Media 1

и нажимаю Save Settings

Настройки (Event) — Add

  • Event name: Event 1
  • Enable this event: отмечаю галочкой
  • Priority: normal
  • Delay for: 10 seconds
  • Trigger: Video motion detection
  • Event Schedule: Sun, Mon, Tue, Web, Thu, Fri, Sat
  • Time: Always
  • Action: trusty
  • Attached media: Media1

и нажимаю Save Settings

Настройки (Recording) — Add

  • Recording entry name: 1
  • Enable this recording: отмечаю галочкой
  • Priority: normal
  • Source: Profile1
  • Recording Scheduler: отмечаю все
  • Time: Always
  • Destinations: Samba
  • Total cycling recording size: 100
  • Size of each for recording: 50 Mbytes

и нажимаю Save Settings

После чего сразу же начинается запись по сети если есть движение:

ekzorchik@srv-trusty:~$ sudo apt-get install tree -y

ekzorchik@srv-trusty:~$ sudo tree /media/camera/

/media/camera/

├── test.txt

└── Video

└── Record

└── 20171031

└── 21

└── 20171031_211552_3420.avi

4 directories, 2 files

В одночасье решил проверить, а какой сейчас размер видео файла:

ekzorchik@srv-trusty:~$ sudo ls -lh /media/camera/Video/Record/20171031/21/

total 8.9M

-rwxrw-rw- 1 camera camera 8.9M Oct 31 21:18 20171031_211552_3420.avi

Работает, вот только жаль что запись идет не на FTP, ну и ладно. Главное хоть что-то работает тут не приходится жаловаться.

Замечен нюанс, если были через Web-интерфейс произведены настройки и сохранены, то почему-то предыдущие записи удаляются, а пишется только текущая. Косяк. Ну да ладно, ведь цель заметки почти не была достигнута, но приобретен взамен другой опыт и главное что оно хотя бы заработало. Т.е. действительно возможно настроить запись IP-камеры на внешний ресурс при настройках через Web-интерфейс. На этом я прощаюсь, с уважением автор блога Олло Александр aka ekzorchik.