Задача: нужно автоматизировать подключение по vnc к серверу и настроить плановую перезагрузку клиента Tonk 1202 с Linux на борту.
В процессе исполнения данной задачей столкнулся с тем, что на этой кастрированной сборке та которая установлена на этом тонком клиенте нет утилиты vncpasswd посредством которой нужно создать так называемый файл с паролем (он бинарен) который нужно будет передать в качестве параметра утилите vncviewer. Во общем все по порядку:
Настраиваю задачу на подключение к серверной части VNC:
Находясь на тонком клиенте нажимаю клавиатурное сочетание клавиш: Ctrl + Alt + X для вызова консоли командной строки xterm. После чего перехожу в каталог /etc/startupconf и создаю файл следующего содержания:
bash-3.00# cd /etc/startupconf
bash-3.00# vi vnc
[application]
vnc
[vnc]
name=vnc
comment=vnc
comment_en=vnc
cmd0=
cmd1=
cmd=sleep 20 && /usr/bin/vncviewer password=/root/passwd fullscreen=1 192.168.13.63:5900
cmd2=
cmd3=
startup=1
canset=1
Не забываем сохранить внесенные изменения.
, где 192.168.13.63:5900 — это сервер с функциями видеонаблюдения где конкретно под этот тонкий клиент созданы условия для отображения 4 камер сервисной зоны.
bash-3.00# chmod +x vnc
Теперь раз на сервере нет утилиты vncpasswd, то потребуется на любой имеющейся в Вашем распоряжении Linux системы, у меня это Ubuntu 14.04.3 Server amd64 (сервер с функциями ATC (Asterisk + FreePBX) создать данный файл с паролем и передать его на данный тонкий клиент Tonk 1202 (а вот это еще та задачка, так как привычных команд: curl, wget, ssh тут нет и это очень здорово все затрудняет, да я бы проще сказал — раскрывает возможности системного администратора для решения этой задачи, вспоминания всего и вся и конечно же гугления с правильно поставленными вопросами).
ekzorchik@srv-phone:~$ sudo apt-get install vnc4server
ekzorchik@srv-phone:~$ vncpasswd
Password:123456
Verify:123456
В итоге получился следующий файл который мне нужно передать на Tonk 1202
ekzorchik@srv-phone:~$ file ~/.vnc/passwd
/home/ekzorchik/.vnc/passwd: data
Поднимаю VSFTPD сервер для подключения анонимных учетных записей на любой системе, в моем случае это сервер с функциями ATC (Astrisk + FreePBX):
ekzorchik@srv-phone:~$ sudo nano /etc/vsftpd.conf
anonymous_enable=YES
listen=YES
#local_enable=YES
ekzorchik@srv-phone:~$ sudo service vsftpd restart
Создаю каталог для анонимных пользователей:
ekzorchik@srv-phone:~$ sudo mkdir /media/ftp
ekzorchik@srv-phone:~$ sudo usermod -d /media/ftp ftp
ekzorchik@srv-phone:~$ sudo touch /media/ftp/1
Проверяю, что смогу с другой системы с осью Ubuntu 12.04.5 Server amd64 на борту подключиться под анонимным пользователем:
aollo@system:~$ ftp 10.7.8.155
Connected to 10.7.8.155.
220 (vsFTPd 3.0.2)
Name (10.7.8.155:aollo): anonymous
331 Please specify the password.
Password:ad@nm.ru
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r–r– 1 0 0 0 Nov 14 09:38 1
226 Directory send OK.
ftp> quit
421 Timeout.
Отлично подключился и вижу созданный файл с именем 1.
Переношу файл с паролем passwd в каталог FTP:
ekzorchik@srv-phone:~$ sudo mv /home/ekzorchik/.vnc/passwd /media/ftp
ekzorchik@srv-phone:~$ sudo chown root:root /media/ftp/passwd
ekzorchik@srv-phone:~$ md5sum /media/ftp/passwd
b22f198fd0301c5a43a36640a094e878 /media/ftp/passwd
Переключаемся на консоль xterm тонкого клиента Tonk 1202 и произвожу подключение через утилиту ftp к серверу с ролью FTP сервера:
ftp> open 10.7.8.155
Connected to 10.7.8.155 (10.7.8.155).
220 (vsFTPd 3.0.2)
Name (10.7.8.155:root): anonymous
331 Please specify the password.
Password:ввожу любой вид к примеру: ekzorchik@gov.mil
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
Ftp> ls
227 Entering Passive Mode (10,7,8,155,82,2).
150 Here comes the directory listing.
-rw-r—r– 1 0 0 0 Nov 14 09:38 1
-rw——– 1 1000 1000 8 Nov 14 09:47 passwd
226 Directory send OK.
Проверяю, что могу скачать файл с именем 1 и получается.
ftp> get 1
local: 1 remote: 1
227 Entering Passive Mode (10,7,8,155,121,45).
150 Opening BINARY mode date connection for 1 (0 bytes).
226 Transfer compler.
Теперь пробую скачать файл с паролем и терплю неудачу:
ftp> get passwd
local: passwd remote: passwd
227 Entering Passive Mode (10,7,8,155,140,104).
550 Failed to open file.
Опытным путем выяснил, что должны быть в каталоге /media/ftp права на файлы: 644
ekzorchik@srv-phone:/media/ftp$ sudo chmod 644 passwd
ekzorchik@srv-phone:/media/ftp$ ls -l
total 4
-rw-r–r– 1 root root 0 Nov 14 09:38 1
-rw-r–r– 1 root root 8 Nov 14 09:47 passwd
Теперь скачиваю файл passwd и все получается:
ftp> get passwd
local: passwd remote:passwd
227 Entering Passive Mode (10,7,8,155,113,17).
150 Opening BINARY mode date connection for passwd (8 bytes).
226 Transfer complete.
8 bytes received in 0,000178 secs (44 Kbytes/sec)
ftp> quit
221 Goodbye.
Проверяю контрольную сумму скачанного файла с той которая есть на FTP сервере, что в процессе передачи файлы ничего не изменилось:
bash-3.00# md5sum passwd
b22f198fd0301c5a43a36640a094e878 /media/ftp/passwd
Контрольная сумма сходится, значит файл передался без каких либо изменений.
После создаем еще один файл с именем shutdown который будет отвечать за плановую перезагрузку в заданное время (просто ранее этого времени перезагружается сама серверная часть VNC развернутая на сервере видеонаблюдения с целью вывода на экран в клиентской зоне камер цеховой зоны. Ранее я поднимал ZoneMinder, но от него пришлось отказаться, т. к. данный тонкий клиент фирмы Tonk не справлялся с нагрузкой и транслируемые изображения с 4 камер подвисали):
bash-3.00# cd /etc/startupconf
bash-3.00# cat vnc > shutdown
bash-3.00# vi shutdown
[application]
shutdown
[shutdown]
name=shutdown
comment=shutdown
comment_en=shutdown
cmd0=
cmd1=
cmd=sleep 20 && /usr/bin/shutdown -r 07:20 &
cmd2=
cmd3=
startup=1
canset=1
Не забываем сохранить внесенные изменения.
bash-3.00# chmod +x shutdown
Проверяем, что тонкий клиент с его хоть и ограниченными возможностями видит созданные конфигурационные файлы:
Start — Настройки Системы — Автозапуск
Видите все нормально.
После конечно же не забываем сохранить все изменения на тонком клиенте:
Start — Сохранить данные.
В конечном итоге после перезагрузки тонкого клиента на экране широкоформатного телевизора к которому он подключен будет вот такое вот изображение:
На этом я прощаюсь, эта заметка пригодится мне на будущее, вот к примеру работая ранее на предыдущем месте и встретившись с данными пародиями на рабочее место, а именно старая версия тонких клиентов фирмы Tonk я здорово намучился изобретая велосипеды и анализируя как же с помощью того что есть решить поставленную задачу. В процесс для себя оформил множество заметок и уже на основе них и своего опыта решил на текущем месте текущую задачу по оптимизации имеющегося для вывода видеоизображения. До встречи, с уважением автор блога — Олло Александр (aka ekzorchik).