Разрабатываете инструмент, чтобы узнать, кто подключился к удаленной машине?

Сценарий. Наша команда состоит из 22 участников, которые ежедневно входят на свои локальные компьютеры со своими уникальными идентификаторами, а затем подключаются к удаленным компьютерам с набором логинов.

Здесь логины, используемые для подключения к удаленным машинам, не уникальны. Я имею в виду, что к одному и тому же имени пользователя может быть подключено более одной машины.

В одной строке 22 удаленных компьютера будут иметь только 5-6 логинов, которые используются 22 участниками..

Проблема: поскольку удаленные компьютеры не предназначены для каждого сотрудника. Каждый день нам нужно отправлять письмо всей группе, спрашивая, кто подключен к конкретному удаленному компьютеру.. И если кто-то отвечает да.. мы попросим их отключиться..

Я хочу разработать небольшой инструмент с использованием java, который запускается на каждой машине и отображает, какая машина используется какой.

Код, который упоминается на этом сайте, полезен, но он не указывает, кто использовал этот логин? Ссылка: http://lazynetworkadmin.com/content/view/34/6/

Надеюсь, я ясно изложил свою мысль :)

Пожалуйста, помогите мне, как я могу действовать? .. Как вы думаете, это возможно?

ПРИМЕЧАНИЕ. Забыл упомянуть операционную систему. Это: Windows XP.


person javanoob    schedule 27.07.2010    source источник
comment
Вам нужно сказать, какая ОС работает на удаленных машинах. Это, безусловно, потребует решения для конкретной ОС.   -  person Stephen C    schedule 27.07.2010
comment
Спасибо, Стивен, я отредактировал свой вопрос.   -  person javanoob    schedule 27.07.2010


Ответы (2)


На удаленной машине вы можете запустить программу netstat, которая выводит что-то вроде этого:

C:\> netstat -n | find ":80"
  TCP    192.168.1.33:1930      209.85.129.190:80      ESTABLISHED
  TCP    192.168.1.33:2749      74.125.39.139:80       ESTABLISHED
  TCP    192.168.1.33:2861      74.125.171.167:80      TIME_WAIT

Из этого вывода вы можете увидеть все установленные сетевые подключения. В третьем столбце вы видите IP-адрес и порт другого хоста. find сохраняет только строки, содержащие «:80» (в моем случае это все удаленные HTTP-хосты, к которым я подключен). Поскольку вы знаете порт, к которому будут подключаться удаленные хосты, вы можете фильтровать по этому номеру порта. Третий столбец будет содержать IP-адреса и порты всех компьютеров, подключенных к этому хосту.

По IP-адресу должно быть легко узнать, чей это компьютер.

Обновление:

Поскольку вы хотите использовать Java, должно быть ясно, что делать:

  1. Запустите команду netstat -n.
  2. Запишите вывод в файл List<String>.
  3. Разделите каждую строку на слова.
  4. Оставьте только те строки, у которых word[0] равно TCP, word[1] заканчивается на :3389, а words[3] равно ESTABLISHED.
  5. Разделите word[2] этих строк на двоеточие. Тогда первым элементом является IP-адрес.
  6. Сообщите список этих IP-адресов на центральный сервер.

На центральном сервере есть небольшая программа, доступная через веб-сервер:

  1. Сервер хранит список активных подключений. Каждый состоит из удаленного хоста, клиентского хоста и метки времени, когда он был обновлен в последний раз.
  2. Принимать входящие соединения с удаленных машин.
  3. Получите список клиентских IP-адресов из одного соединения.
  4. Удалите из «активного списка» все клиентские IP-адреса, о которых сообщалось с этого IP-адреса.
  5. Отобразите полученный список.

Например:

  • Изначально список активных подключений пуст.
  • remote0 отправляет 192.168.0.33,192.168.0.35 в качестве своих активных клиентов.
  • Список активных подключений теперь содержит remote0:192.168.0.33, remote0:192.168.0.35.
  • Некоторое время спустя remote0 отправляет `` (пустой ответ) в качестве своих активных клиентов.
  • Теперь и список активных подключений пуст.

Поэтому веб-серверу необходимо обрабатывать два URL-адреса:

  • /connections/list для списка всех активных подключений
  • /connections/update для обновления соединений для одного удаленного хоста

Звучит как немного работы, но это, безусловно, выполнимо. И когда он закончен, он кажется мне вполне пригодным для использования.

person Roland Illig    schedule 27.07.2010
comment
Спасибо, Роланд, за ваше время и ответ. Когда мы подключаемся к удаленному компьютеру с помощью mstsc, для которого по умолчанию используется порт 3389.. Я попробовал следующую команду.. netstat -n | find :3389 И он работает так, как я ожидал. Теперь мне нужно запустить эту команду на каждой машине и опубликовать результаты на других машинах.. Я не знаю, смогу ли я этого добиться.. Спасибо, Роланд, это помогло мне.. - person javanoob; 28.07.2010
comment
Вы на самом деле отображаете IP-адрес перед фактическим именем пользователя, я потерял дар речи. - person Anders; 28.07.2010
comment
Роланд, спасибо за подробное объяснение того, как это сделать.. Обязательно покажу вам, когда это будет сделано. Спасибо, что потратили время на объяснение .. - person javanoob; 29.07.2010

Зайти через локальный прокси. Тогда прокси знает, какие соединения активны.

person Thorbjørn Ravn Andersen    schedule 27.07.2010
comment
Андерсен, спасибо за ваш ответ.. Можете ли вы опубликовать какую-нибудь ссылку или учебник.. Я не мог понять, что вы говорите.. извините меня.. - person javanoob; 27.07.2010