Разработка инструмента, чтобы узнать, кто подключен к удаленной машине? - PullRequest
0 голосов
/ 27 июля 2010

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

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

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

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

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

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

Надеюсь, я четко изложил свою точку зрения:)

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

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

Ответы [ 2 ]

1 голос
/ 28 июля 2010

На удаленном компьютере вы можете запустить программу 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 для обновлениясоединения для одного удаленного хоста

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

0 голосов
/ 27 июля 2010

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

...