пятница, 25 октября 2024 г.

Запуск UltraVNC сервера на удаленном компьютере в локальной сети через PsExec

Есть такой программный комплекс LANDesk Remote Control, который используется для удаленного подключения к компьютерам в локальной сети. Данная программа состоит: 

- из программы LANDesk Remote Control Agent - это агент, который устанавливается на все компьютеры к которым нужно подключаться.  
- из программа LANDesk Remote Control Viewer – это удаленный просмоторщик, с помощью неё мы подключаемся к нужному компьютеру, где установлен агент.
- из  LANDesk Remote Control Console — это консоль управления, что-то вроде каталога базы данных, куда агенты посылают информацию о компьютерах.

Данный программный комплекс можно использовать по назначению, но есть несколько проблем, которые я бы хотел перечислить:

1) Агент бывает иногда некорректно устанавливается на компьютер
2) Каталог базы данных бывает иногда глючит и не может корректно общаться с агентом
3) Агент иногда теряет связь с каталогом базы данных

Данные проблемы с горем пополам удается решить, но на решение данных проблем уходит большое количество времени от 30 минут до 4 часов в зависимости от характеристик компьютера.

По этой причине мне пришлось искать другие решения для удаленного управления компьютерами в локальной сети. Пора научиться пользоваться программой под названием UltraVNC.

Поискав в Google информацию по настройке сервера UltraVNC я наткнулся на сайт, где рассказывается как можно автоматизировать установку и настройку сервера UltraVNC. Вот это ссылка. На основе этой статьи я написал свои batch файлы для автоматизации развертывания сервера UltraVNC и по необходимости его удаление.           

Первым делом качаем портативную версию UltraVNC с официального сайта она поставляется в заархивированном виде (ZIP файл) https://uvnc.com/component/jdownloads/summary/470-ultravnc-1-4-6-zip.html . На момент написания статьи последняя версия представленная на официальном сайте 1.4.3.6 версия. На всякий случаю оставлю ссылку на главную страницу скачивания UltraVNC https://uvnc.com/downloads/ultravnc.html . Распакуйте архив и вы увидите в нем UltraVNC для платформы x86 и x64. Тут принцип простой если вы подключаетесь к компьютеру с 32-х битной системой Windows, то используйте сервер UltraVNC (winvnc.exe) из папки x86, если вы подключаетесь к компьютеру с 64-х битной системой Windows, то используйте сервер UltraVNC (winvnc.exe) из папки x64. Теперь запустите у себя на компьютере файл winvnc.exe из папки x86 или х64 в зависимости от разрядности вышей Windows. В результате этого у вас откроется окно показанное на рисунке 1.

Рисунок 1. Настройка сервера UltraVNC

В этом окне необходимо выполнить два действия:

1) Установить разные пароли для режима управления и режима просмотра удаленного компьютера (Смотрите рисунок 1 цифра 1)
2) Установить опцию отключения значка в трее на панели задач рядом с часами (Смотрите рисунок 1 цифра 2)
Нажмите кнопку Apply и Ok для сохранения всех настроек сервера UltraVNC в файл UltraVNC.ini.

Так же скачайте утилиту PsExec с официального сайта Microsoft по этой ссылке. Или по прямой ссылке. Достаем из архива файл PsExec.exe сохраняем его в папку cmd2 на диске F или в другую любую папку на ваш выбор. За одно в папку cmd2 копируем файл winvnc.exe и файл UltraVNC.ini.  

Переходим к написанию batch файлов.  В папке cmd2 создайте файл uvnc.bat и файл uvnc_del.bat.

Важно! У вас должны быть права администратора на удаленном компьютере. Файлы uvnc.bat и uvnc_del.bat необходимо запускать в командной строке Windows. Синтаксис запуска скриптов следующий: 

 uvnc.bat pc01
 uvnc_del.bat pc01

pc01 - это имя удаленного компьютера, куда вы запускаете сервер UltraVNC.    

Содержимое файла uvnc.bat c комментариями:

@echo off
cls

net use O: /delete /y

if exist \\%1\C$\Temp\ (
   net use O: \\%1\C$\Temp
) else (
  net use O: \\%1\C$
  mkdir O:\Temp
  net use O: /delete /y
  net use O: \\%1\C$\Temp
)
mkdir O:\uvnc
copy "%~d0%~p0\winvnc.exe" "O:\uvnc" /y
copy "%~d0%~p0\UltraVNC.ini" "O:\uvnc" /y

psexec \\%1 net stop uvnc_service
psexec \\%1 "taskkill.exe" /f /im winvnc*

psexec \\%1 C:\Temp\uvnc\winvnc.exe -install

pause 

Комментарий по коду выше:
net use O: /delete /y (Удаляем сетевой диск O: если он существует)

if exist \\%1\C$\Temp\ (Этой строкой проверим существует ли на удаленном компьютере папка Temp в корне диска C, где %1 — автоматически подставится имя удаленного компьютера)
Если папка Temp существует, то строкой  net use O: \\%1\C$\Temp создаем сетевой диск O, который указывает на папку C:\Temp на удаленном компьютере.  
Если папка Temp не существует, то строкой  net use O: \\%1\C$ создаем сетевой диск O, который указывает в корень диска C на удаленном компьютере, строкой mkdir O:\Temp на сетевом диске O: создаем папку Temp, строкой net use O: /delete /y удаляем сетевой диск O:, строкой  net use O: \\%1\C$\Temp создаем сетевой диск O, который указывает на папку C:\Temp на удаленном компьютере.
Строкой  mkdir O:\uvnc создадим папку uvnc на сетевом диске O.

Строками
copy "%~d0%~p0\winvnc.exe" "O:\uvnc" /y
copy "%~d0%~p0\UltraVNC.ini" "O:\uvnc" /y      
скопируем из папки F:\cmd2 файл winvnc.exe и файл UltraVNC.ini в папку uvnc на сетевом диске O. (%~d0%~p0 — это строка означает путь откуда выполняется скрипт uvnc.bat, в частности это F:\cmd2)

Строками
psexec \\%1 net stop uvnc_service
psexec \\%1 "taskkill.exe" /f /im winvnc*

psexec \\%1 C:\Temp\uvnc\winvnc.exe -install

мы на удаленном компьютере останавливаем службу uvnc_service сервера UltraVNC (psexec \\%1 net stop uvnc_service), потом выгружаем на удаленном компьютере процессы из памяти с именем winvnc если такие имеют место быть (psexec \\%1 "taskkill.exe" /f /im winvnc*), потом устанавливаем на удаленном компьютере сервер UltraVNC в виде службы с именем uvnc_service (psexec \\%1 C:\Temp\uvnc\winvnc.exe -install).

Содержимое файла uvnc_del.bat c комментариями: 

@echo off
cls

psexec \\%1 net stop uvnc_service
psexec \\%1 "taskkill.exe" /f /im winvnc*

psexec \\%1 C:\Temp\uvnc\winvnc.exe -uninstall

del /q O:\uvnc\*
rd O:\uvnc

net use O: /delete /y
pause  

Строкой psexec \\%1 net stop uvnc_service мы на удаленном компьютере останавливаем службу uvnc_service сервера UltraVNC.
Строкой psexec \\%1 "taskkill.exe" /f /im winvnc* выгружаем на удаленном компьютере процессы из памяти с именем winvnc если такие есть.
Строкой psexec \\%1 C:\Temp\uvnc\winvnc.exe -uninstall удаляем на удаленном компьютере службу с именем uvnc_service

Строкой del /q O:\uvnc\* удаляем на удаленном компьютере все файлы в папке uvnc на сетевом диске O.
Строкой rd O:\uvnc удаляем на удаленном компьютере папку uvnc на сетевом диске O.
Строкой net use O: /delete /y удаляем сетевой диск O: если он существует.

Всё. Как только сервер UltraVNC заработает на удаленном компьютере, то вам останется запустить vncviewer.exe программу удаленный просмоторщик, ввести имя удаленного компьютера к которому мы хотим подключится, вводим пароль который мы установили при настройке сервера UltraVNC и нажимаем кнопку Connect (Смотрите рисунок 2).

Рисунок 2. Окно программы просмоторщика UltraVNC

В данном примере мы запустили сервер UltraVNC в режиме службы, я пытался запустить также сервер в режиме приложения, но данный режим по какой-то причине не работает, скорее всего не хватает прав, смотрите рисунок 3 как это выглядит при попытке подключения к удаленному компьютеру.
 
Рисунок 3. Просмоторщик UltraVNC запущенный в режиме приложения

Комментариев нет:

Отправить комментарий