Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программа мониторинга сети 
:(
    Опции темы
Kamil
Дата 27.11.2006, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 26.11.2006

Репутация: нет
Всего: нет



Здравствуйте. Мне нужна помощь в написании следующих методов:

- метод поиска количества logins и logouts в сети.
- метод, который бы по IP определял бы, если это возможно, какие приложения (процессы) запущены на клиенте
- последний метод, определить ссылки сайтов, посещенным конкретным пользователем на удаленной машине. 

Я недели три пытаюсь найти информацию с живыми примерами. Не могу найти. Помогите пожалуйста. Заранее спасибо.

Это сообщение отредактировал(а) Kamil - 27.11.2006, 01:41
PM MAIL ICQ YIM   Вверх
LSD
Дата 27.11.2006, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



1. Универсального способа это все реализовать нет. Для каждой конкретной ОС надо искать свой подход, и не факт что он будет существовать.
2. Ты собрался это все писать на Java?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Kamil
Дата 27.11.2006, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 26.11.2006

Репутация: нет
Всего: нет



Цитата

Универсального способа это все реализовать нет. Для каждой конкретной ОС надо искать свой подход, и не факт что он будет существовать.


Первый метод, мне кажется надо делать с помощью RMI. Я правильно думаю или как ? 

Насчет второго метода. Что именно можно сделать?  Допустим, возьмем для начала к примеру ОС Windows у клиента. Реально получить информацию удаленно, какие процессы запущены у клиента? 

Третий метод. Тут я согласен. Если ОС у клиента опять та же Windows, то нужная мне инфа находится в папке C:\Documents and Settings\<название_учетки>\Local Settings\Temporary Internet Files. 
Не знаю, как в Linux, но там должен быть естественно другой путь. Насчет других ОС - не знаю. Здесь у меня возникает следующие проблемы: надо получить инфу о названии удаленной залогиненной учетки, это раз. Другая проблема, надо узнать какая ОС используется на клиенте.

Цитата

Ты собрался это все писать на Java?


Да

Это сообщение отредактировал(а) Kamil - 27.11.2006, 22:04
PM MAIL ICQ YIM   Вверх
LSD
Дата 27.11.2006, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



Цитата(Kamil @  27.11.2006,  22:02 Найти цитируемый пост)
Первый метод, мне кажется надо делать с помощью RMI. Я правильно думаю или как ?

Нет, RMI это просто удаленный вызов процедур. Никакого отношения к login/logout он не имеет.


Цитата(Kamil @  27.11.2006,  22:02 Найти цитируемый пост)
Насчет второго метода. Что именно можно сделать?  Допустим, возьмем для начала к примеру ОС Windows у клиента. Реально получить информацию удаленно, какие процессы запущены у клиента?

Можно, но надо иметь привелегии администратора на удаленной системе.


Цитата(Kamil @  27.11.2006,  22:02 Найти цитируемый пост)
Третий метод. Тут я согласен. Если ОС у клиента опять та же Windows, то нужная мне инфа находится в папке C:\Documents and Settings\<название_учетки>\Local Settings\Temporary Internet Files. Не знаю, как в Linux, но там должен быть естественно другой путь. Насчет других ОС - не знаю. Здесь у меня возникает следующие проблемы: надо получить инфу о названии удаленной залогиненной учетки, это раз. Другая проблема, надо узнать какая ОС используется на клиенте.

1. Там может быть залогинено несколько пользователей. Опять же без учетной записи администратора, тут нечего делать.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Kamil
Дата 27.11.2006, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 26.11.2006

Репутация: нет
Всего: нет



Цитата

Нет, RMI это просто удаленный вызов процедур. Никакого отношения к login/logout он не имеет.


Может у клиента запущен объект с методом, который и возвращает булевое значение - он залогинился или нет?

Цитата

Можно, но надо иметь привелегии администратора на удаленной системе.


Ситуация здесь такая. Программа запускается на сервере. Ее запускает админ. Какие права у удаленной учетки - неизвестно. Хотя интересно было бы и это узнать. Но это пока не требуется знать в моем проекте.



PM MAIL ICQ YIM   Вверх
Kamil
Дата 28.11.2006, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 26.11.2006

Репутация: нет
Всего: нет



Ребята, если есть возможность подкиньте идеи с чего начать первые два метода: "logins-logouts" и  "Запущенные процессы". 

Могу показать полное название проекта и в чем заключается его проблема:

Project Title: 

Network monitoring and management system

Problem:

To find out the numbers of computers in all domains along with their IP-address. To find out the sites, visited by the clients on the Internet. Numbers of logins and logouts and the applications accessed by a particular user.

PM MAIL ICQ YIM   Вверх
LSD
Дата 28.11.2006, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



Цитата(Kamil @  27.11.2006,  22:32 Найти цитируемый пост)
Может у клиента запущен объект с методом, который и возвращает булевое значение - он залогинился или нет?

На чистой Java это не реализовать, надо будет поизвращаться.


Цитата(Kamil @  27.11.2006,  22:32 Найти цитируемый пост)
Ситуация здесь такая. Программа запускается на сервере. Ее запускает админ. Какие права у удаленной учетки - неизвестно. Хотя интересно было бы и это узнать. Но это пока не требуется знать в моем проекте.

Сервер понятие слишком общее. Если это контроллер домена и машина в домене, то тут можно получить практически полный контроль над удаленной машиной. А если это веб сервер, то тут отличия от рядовой машины нет.


Цитата(Kamil @  28.11.2006,  00:14 Найти цитируемый пост)
Ребята, если есть возможность подкиньте идеи с чего начать первые два метода: "logins-logouts" и  "Запущенные процессы". 

Есть такая штука PsUtils от Sysinternals, у них есть ряд консольных утилит которые могут помочь, во первых это PsLoggedOn:
Цитата
PsLoggedOn v1.31 - Logon Session Displayer
Copyright © 1999-2003 Mark Russinovich
Sysinternals - www.sysinternals.com

Users logged on locally:
     <Unknown> NT AUTHORITY\LOCAL SERVICE
     <Unknown> NT AUTHORITY\NETWORK SERVICE
     28.11.2006 10:58:03    ANIS\Administrator
     <Unknown> NT AUTHORITY\SYSTEM

Users logged on via resource shares:
     28.11.2006 11:49:39    ANIS\ZXION
     28.11.2006 11:54:15    PK-AL-PC\PK-AL
     28.11.2006 11:55:10    ANDRE-PC\ANDREJ
     28.11.2006 11:55:26    ANIS\ADMINISTRATOR
     28.11.2006 11:49:42    VADIM-PC\ADMINISTRATOR

и PsList:
Цитата
PsList 1.26 - Process Information Lister
Copyright © 1999-2004 Mark Russinovich
Sysinternals - www.sysinternals.com

Process information for srv:

Name                Pid Pri Thd  Hnd   Priv        CPU Time    Elapsed Time
Idle                  0   0   2    0      0     8:05:27.671     0:00:00.000
System                4   8  62 1160      0     0:00:28.625     0:00:00.000
smss                432  11   3   19    140     0:00:00.031     4:02:39.921
csrss               500  13  11  537   1508     0:00:02.140     4:02:39.234
winlogon            936  13  30  643   8652     0:00:01.156     4:02:35.687
services           1032   9  18  369   4048     0:00:02.187     4:02:35.593
lsass               960   9  52  873  20064     0:00:15.281     4:02:35.578
ati2evxx            156   8   4   64    508     0:00:00.015     4:02:35.312
svchost            1264   8   6   80    816     0:00:00.015     4:02:35.296
svchost            1148   8  10  229   1216     0:00:00.765     4:02:32.218
svchost            1392   8  10  152   3716     0:00:00.218     4:02:32.171
svchost            1496   8  13  154   1072     0:00:00.031     4:02:32.125
svchost            1528   8  40  875  11804     0:00:02.828     4:02:32.109
spoolsv            1500   8  19  192   5884     0:00:00.140     4:01:28.656
msdtc              1688   8  13  152   1496     0:00:00.015     4:01:28.609
dfssvc             1620   8  11  116   1780     0:00:04.031     4:01:28.281
DkService          1756   8   8  161   4416     0:00:00.078     4:01:28.234
dns                1888   8  14  186   7560     0:00:00.328     4:01:27.937
svchost            1936   8   2   56    464     0:00:00.000     4:01:27.859
IAANTMon           2032   8   3   96    352     0:00:00.000     4:01:27.765
InCDsrv             216   8  15  166   1632     0:00:00.062     4:01:27.687
ismserv            1892   8   9  111   1664     0:00:00.031     4:01:27.562
ntfrs              1932   8  20  269   9164     0:00:00.296     4:01:27.515
svchost             448   8   4  166   7204     0:00:00.109     4:01:27.156
SSService           508   8   3   74    952     0:00:00.015     4:01:27.125
svchost             480   8   5   91   2908     0:00:00.031     4:01:26.734
SVNService          252   8   2   28    460     0:00:00.000     4:01:26.734
svnserve            584   8   1   47   5932     0:00:05.140     4:01:26.703
wins                736   8  18  207   5804     0:00:00.125     4:01:26.609
svchost            2296   8  15  133   1344     0:00:00.031     4:00:57.656
wmiprvse           3020   8   5  165   1672     0:00:00.250     4:00:25.859
ati2evxx           2952   8   4   64    624     0:00:00.031     0:59:55.781
explorer            832   8   8  275  10964     0:00:01.437     0:59:55.656
IAAnotif           3968   8   2   36    564     0:00:00.015     0:59:54.375
InCD               2088   8   3  114   3412     0:00:00.203     0:59:54.250
ctfmon             3352   8   1   66    392     0:00:00.046     0:59:54.156
mmc                2420   8   7  250   5972     0:00:00.703     0:47:24.109
logon.scr          3692   4   1   37    396     0:00:00.000     0:42:01.578
wmiprvse           2616   8   7  129   1688     0:00:00.093     0:02:49.906

Они обе консольные и с ними можно работать черес Runtime.exec().


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Kamil
Дата 28.11.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 26.11.2006

Репутация: нет
Всего: нет



Цитата

На чистой Java это не реализовать, надо будет поизвращаться.


Понятия не имею, как это будет работать. 

Насчет сервера. Понимаете, программа также будет контролировать, подключены клиенты к Интернету или нет, следовательно как я понимаю, программа должна запускаться на Proxy, а вот насчет контроллера домена... Вообще, у меня метод поиска клиентов используют метов isReachable у InetAddress-a. Думал использовать Multicasting, что то не работало у меня. Так вот, когда я получаю IP-шники, мне надо их отсортировать по доменам. Я запускал программу в простой локалке для поиска и мне возвращались неполные имена компов (т.е. без именем домена). Как тут мне поможет контроллер домена? 

Не совсем понял цитату 
Цитата
 Есть такая штука PsUtils от Sysinternals
 . Чо за Sysinternals? Эти утилиты для конкреной ОС как я понимаю, на верное для серверной ОС ? Правильно?

Добавлено @ 13:15 
Пробую у себя запустить PsList из командной строки. Ошибка. У меня XP. 

Возникает ошибка из-за моей ОС?

Добавлено @ 13:18 
Стоп. Извиняюсь, не уведел, что SysInternals это сайт. Поищу эти утилиты.
PM MAIL ICQ YIM   Вверх
Kamil
Дата 28.11.2006, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 26.11.2006

Репутация: нет
Всего: нет



Никогда не пользовался методом Runtime.exec(String str). Как я понял, чтобы получить результат выполнения этой утилиты , я получаю объект Process, у которого получаю входной поток с помощью  getInputStream(), а затем считываю результат из него. Верно?

Добавлено @ 13:32 
Только это грубый метод с использованем утилит, ведь у меня на сервере может быть какой - нибудь RedHat, который не знает что такой PsList.exe или PsLoggedOn.exe
PM MAIL ICQ YIM   Вверх
LSD
Дата 28.11.2006, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



Цитата(Kamil @  28.11.2006,  13:28 Найти цитируемый пост)
Только это грубый метод с использованем утилит, ведь у меня на сервере может быть какой - нибудь RedHat, который не знает что такой PsList.exe или PsLoggedOn.exe

Так об этом я и говорил!
Цитата(LSD @  27.11.2006,  11:01 Найти цитируемый пост)
Универсального способа это все реализовать нет. Для каждой конкретной ОС надо искать свой подход, и не факт что он будет существовать.


Цитата(Kamil @  28.11.2006,  13:28 Найти цитируемый пост)
Никогда не пользовался методом Runtime.exec(String str). Как я понял, чтобы получить результат выполнения этой утилиты , я получаю объект Process, у которого получаю входной поток с помощью  getInputStream(), а затем считываю результат из него. Верно?

Да.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Kamil
Дата 28.11.2006, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 26.11.2006

Репутация: нет
Всего: нет



Если есть такие утилиты, то наверное их можно сделать на Java.

Неужели нет программ на подобие этой?

Цитата

Для каждой конкретной ОС надо искать свой подход, и не факт что он будет существовать


Не знаю верно это или нет, но как мне кажется может есть какой то протокол и порт по которому машины могут обмениваться информацией, а если конкретно, какая используется ОС, информация о пользователе, о параметрах машины.
PM MAIL ICQ YIM   Вверх
tux
Дата 28.11.2006, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 5
Всего: 132



Цитата(Kamil @  28.11.2006,  15:53 Найти цитируемый пост)
Не знаю верно это или нет, но как мне кажется может есть какой то протокол и порт по которому машины могут обмениваться информацией, а если конкретно, какая используется ОС, информация о пользователе, о параметрах машины. 

Протокол и порт может и есть, вот только... Порт - это суть логический интерфейс, через которые приложения могут обмениваться данными. Чтобы порт выдавал какую-то информацию нужно чтобы на этот порт прослушивало какое-то приложение. В вашем случае это должен быть какой-то сервис, который будет выдавать информацию об ОС, пользователе, параметрах машины и т.п. Вы этот сервис сами собираетесь писать? Ни одна из известных мне операционных систем такого сервиса не предоставляет. Каким образом собираетесь гарантировать, что сервис запущен? 

Цитата(Kamil @  28.11.2006,  15:53 Найти цитируемый пост)
Если есть такие утилиты, то наверное их можно сделать на Java.

Наверное есть. Только поймите, наконец, программа на Java работает внутри Java-машины и не имеет никакого доступа ни к оборудованию машины ни к сервисам операционной системы за исключением того, что ей явно предоставляет JVM. Поэтому чтобы получить сведения о пользователе и аппаратуре машины придется использовать сервисы ОС либо напрямую работать с оборудованием. На Java это сделать НЕВОЗМОЖНО. Можно лишь вызвать из Java зависимый от платформы код, написанный для конкретной ОС и процессора. Разумеется, то, что у вас работало в одной операционной системе в другой скорее всего не будет, поэтому придется это учитывать.
PM MAIL Skype GTalk Jabber YIM   Вверх
LSD
Дата 28.11.2006, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 19
Всего: 538



Цитата(Kamil @  28.11.2006,  15:53 Найти цитируемый пост)
Не знаю верно это или нет, но как мне кажется может есть какой то протокол и порт по которому машины могут обмениваться информацией, а если конкретно, какая используется ОС, информация о пользователе, о параметрах машины.

По этому вопросу вообщем согласен с tux, за исключением одного:
Цитата(tux @  28.11.2006,  16:18 Найти цитируемый пост)
Ни одна из известных мне операционных систем такого сервиса не предоставляет.

Вообщем они предоставляют такие сервисы (чем PsUtils и пользуются), только:
а) для разных версий ОС они могут варьироваться или поддерживаться в неполном объеме
б) для разных ОС они совершенно различны
с) эта информация приватная, и для ее получения нужен доступ с соответсвующими правами к удаленной системе (пароль администратора в Windows, пароль root в *nix и т.п.)


Цитата(Kamil @  28.11.2006,  15:53 Найти цитируемый пост)
Если есть такие утилиты, то наверное их можно сделать на Java.

Теоретически можно, т.к. они работают по TCP/IP и UDP, а их поддержка в Java есть. Но практически это означает повторение API ОС, что как минимум трудоемко, как максимум нереализуемо т.к. у Microsoft многие протоколы закрытые. Так что проще, надежней и быстрей будет вызывать функции API через JNI.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Kamil
Дата 28.11.2006, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 26.11.2006

Репутация: нет
Всего: нет



Сейчас у меня две главные проблемы:

- сроки выполнения проекта. 2 дня. 

- выбор решения. 

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

Потом другое решение 

Цитата

Так что проще, надежней и быстрей будет вызывать функции API через JNI.


Не знаю я что такое JNI, попробую разобраться. И еще. Опять стоит вопрос об используемой ОС у клиента. Не так ли? Ведь я должен знать какие API должен вызывать ? Или где я неправ ?

А технический вопроc такой:

Если я буду использовать утилиты, то я должен параллельно копировать данную утилиту в пакет с jar-файлом, в котором находится программа. Так вот. Когда я буду вызывать метод Runtime.exec(), то как программа найдет эту утилиту? В текущей папке искать будет? Или с помощью exec-a запустить bat-файл с командой утилиты? 
PM MAIL ICQ YIM   Вверх
Kamil
Дата 29.11.2006, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 26.11.2006

Репутация: нет
Всего: нет



Так. Как будто понял, что такое JNI и как он работает. Теперь другой вопрос.

Я удаленно запрашиваю JNI-функцию. Она должна вернуть мне результат. Пока будем считать, что используется ОС Windows на удаленном компе, вызывается эта функция из dll-ки. 

Теперь вопрос. Как удаленно вызвать JNI-функцию? Ведь, когда я объявил у себя, что использую native-метод в Java-коде, то подразумевается, что выполнение этого метода будет происходить на локальной библиотеке. Как быть?

Добавлено @ 00:49 
Цитата

эта информация приватная, и для ее получения нужен доступ с соответсвующими правами к удаленной системе (пароль администратора в Windows, пароль root в *nix и т.п.)


Еще и получается, что даже если я смогу запустить удаленно JNI-функцию, то потом мне может помешать незнание пароля админа на удаленном компе? Если да, то это очень плохо...... 

Так. Прежде всего мне надо узнать какие библиотеки использовать для вызова native-методов, потом узнать работает ли это дело удаленно, ну а потом узнать есть ли на это у меня права.


Может у кого есть полезная информация по этому поводу?
PM MAIL ICQ YIM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0638 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.