воскресенье, 24 апреля 2011 г.

Дистанционная установка VNC в домене

Каждый системный администратор рано или поздно сталкивается с необходимостью подключиться на удаленный компьютер. Причиной может быть установка или настройка программы, а так же оказание консультации пользователю. Средства, которые по-умолчанию предоставляет операционная система Windows, в частности её не-серверные версии, мягко говоря скудны. Есть Microsoft Terminal Server, работающий по протоколу RDP и Telnet Server, работающий, как это ни странно, по протоколу telnet. Обе, кстати, по-умолчанию, выключены. Впрочем, включить их дистанционно не представляет труда. Однако нам они и не понадобятся.
Telnet предоставляет только режим командной строки, а большинство программ в Windows имеют графические инсталляторы и конфигураторы, значит ни установить, ни настроить программу не удастся. Оказать консультацию выйдет лишь в том случае, если пользователь сам что-то делает в командной строке. Но и то, системному администратору никак не получится "присоединиться" к сессии пользователя.
Msts хоть и предоставляет графический режим, но тоже далеко не идеальное решение. Лицензионные (и технические) ограничения не дадут подключиться к одной рабочей станции нескольким пользователям одновременно (да-да, мы говорим о рабочих станциях, а не серверах). Значит администратор, подключившись в системе, отключит работающего пользователя. В настройках по-умолчанию доступ к терминальному подключению есть лишь у администраторов домена. Значит подключиться под именем текущего пользователя (в вашей сети пользователи же не имеют прав администратора, не так ли?) не удастся. Для этого понадобится вручную добавить учетную запись пользователя в список разрешенных. Для подключения придется спросить пароль пользователя, что не всегда приемлемо. Да, администратор сможет установить и настроить программу, но пользователь всё это время будет наблюдать сообщение "Компьютер используется и заблокирован". Потом ему придется войти в систему снова (а тут пользователя ждет очередной подвох - в имени пользователя осталась учетная запись администратора, а как известно, пользователи не помнят своих логинов).

Это, конечно, всё банальные вещи, очевидные любому системному администратору, чья сеть выходит за географические пределы одной комнаты. Администраторы применяют для удаленного управления всевозможные средства. Radmin, Dameware, Netop и множество других. У них есть определенный недостаток - они платные. Это не совсем недостаток. Более того, некоторые люди считают высокую цену программы достоинством. Однако я рекомендую бесплатную (и открытую) программу, работающую по протоколу VNC - TightVNC. Причем от TightVNC будет только серверная часть, которая устанавливается на клиентские компьютеры. Подключаться туда можно с помощью любого VNC-клиента.

Итак, приступим. Для начала нужно установить серверную часть TightVNC на любой компьютер в пределах досягаемости. После установки произвести настройку. В частности установить пароли на подключение и изменение настроек, а так же включить опцию "Скрывать иконку в системном лотке". Зайти в реестр и экспортировать ветку HKLM\SOFTWARE\TightVNC\Server. Теперь нужно создать каталог в общедоступном месте и скопировать туда tvnserver.exe и screenhooks.dll, а так же полученный reg-файл. Я назвал его tvnc.reg.

Для удаленной установки используется утилита psexec.exe из пакета PsTools, которая просто обязана находиться в наборе инструментов каждого системного администратора.

Всё готово, теперь создаем bat-файл следующего содержания:
@echo off
Set /P TARGET= Enter computer name: 
xcopy /S /Y \\server\share\tightvnc \\%TARGET%\c$\progra~1\tightvnc\
psexec \\%TARGET% regedit /s c:\progra~1\tightvnc\tvnc.reg
psexec -d \\%TARGET% c:\progra~1\tightvnc\tvnserver -install
sc \\%TARGET% start tvnserver

Скрипт запрашивает имя компьютера у пользователя и заносит результат в переменную TARGET. Копирует каталог с подготовленным TightVNC-сервером на целевой компьютер. С помощью psexec импортирует настройки из reg-файла в реестр, устанавливает службу tvnserver и запускает её.

4 комментария:

  1. а дальше что? это скрипт для каждого компа вручную выполнять? вводя с клавиатуры имя?

    ОтветитьУдалить
  2. Когда я его писал, я работал в конторе, где уже использовалась другая система удаленного доступа к рабочему столу. Она мне не подошла по ряду причин, к тому же не поддерживала удаленную установку. Я написал для себя этот скрипт и устанавливал VNC только по необходимости, когда нужно было подключиться. Переубеждать / переучивать коллег у меня желания не было, а ставить через GP не было доступа.

    Естественно с правами администратора домена проще не париться, а разнести всё через GPO, модифицировав скрипт.

    ОтветитьУдалить
  3. Set /P TARGET= Enter computer name:
    вполне можно удалить, оставив вместо %TARGET% %COMPUTERNAME%

    ОтветитьУдалить
  4. Set /P TARGET выводит окно с запросом имени компьютера, что-то вроде GUI :)

    ОтветитьУдалить