Задача: Рассмотреть как будет вестись запись с IP камеры D-Link DCS-2103 на 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.