![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Kamil |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 26.11.2006 Репутация: нет Всего: нет |
Здравствуйте. Мне нужна помощь в написании следующих методов:
- метод поиска количества logins и logouts в сети. - метод, который бы по IP определял бы, если это возможно, какие приложения (процессы) запущены на клиенте - последний метод, определить ссылки сайтов, посещенным конкретным пользователем на удаленной машине. Я недели три пытаюсь найти информацию с живыми примерами. Не могу найти. Помогите пожалуйста. Заранее спасибо. Это сообщение отредактировал(а) Kamil - 27.11.2006, 01:41 |
|||
|
||||
| LSD |
|
|||
![]() 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. |
|||
|
||||
| Kamil |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 26.11.2006 Репутация: нет Всего: нет |
Первый метод, мне кажется надо делать с помощью RMI. Я правильно думаю или как ? Насчет второго метода. Что именно можно сделать? Допустим, возьмем для начала к примеру ОС Windows у клиента. Реально получить информацию удаленно, какие процессы запущены у клиента? Третий метод. Тут я согласен. Если ОС у клиента опять та же Windows, то нужная мне инфа находится в папке C:\Documents and Settings\<название_учетки>\Local Settings\Temporary Internet Files. Не знаю, как в Linux, но там должен быть естественно другой путь. Насчет других ОС - не знаю. Здесь у меня возникает следующие проблемы: надо получить инфу о названии удаленной залогиненной учетки, это раз. Другая проблема, надо узнать какая ОС используется на клиенте.
Да Это сообщение отредактировал(а) Kamil - 27.11.2006, 22:04 |
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Нет, RMI это просто удаленный вызов процедур. Никакого отношения к login/logout он не имеет. Можно, но надо иметь привелегии администратора на удаленной системе. 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. |
|||
|
||||
| Kamil |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 26.11.2006 Репутация: нет Всего: нет |
Может у клиента запущен объект с методом, который и возвращает булевое значение - он залогинился или нет?
Ситуация здесь такая. Программа запускается на сервере. Ее запускает админ. Какие права у удаленной учетки - неизвестно. Хотя интересно было бы и это узнать. Но это пока не требуется знать в моем проекте. |
||||
|
|||||
| Kamil |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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. |
|||
|
||||
| LSD |
|
||||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
На чистой Java это не реализовать, надо будет поизвращаться. Сервер понятие слишком общее. Если это контроллер домена и машина в домене, то тут можно получить практически полный контроль над удаленной машиной. А если это веб сервер, то тут отличия от рядовой машины нет.
Есть такая штука PsUtils от Sysinternals, у них есть ряд консольных утилит которые могут помочь, во первых это PsLoggedOn:
и PsList:
Они обе консольные и с ними можно работать черес 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. |
||||||||
|
|||||||||
| Kamil |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 26.11.2006 Репутация: нет Всего: нет |
Понятия не имею, как это будет работать. Насчет сервера. Понимаете, программа также будет контролировать, подключены клиенты к Интернету или нет, следовательно как я понимаю, программа должна запускаться на Proxy, а вот насчет контроллера домена... Вообще, у меня метод поиска клиентов используют метов isReachable у InetAddress-a. Думал использовать Multicasting, что то не работало у меня. Так вот, когда я получаю IP-шники, мне надо их отсортировать по доменам. Я запускал программу в простой локалке для поиска и мне возвращались неполные имена компов (т.е. без именем домена). Как тут мне поможет контроллер домена? Не совсем понял цитату
Добавлено @ 13:15 Пробую у себя запустить PsList из командной строки. Ошибка. У меня XP. Возникает ошибка из-за моей ОС? Добавлено @ 13:18 Стоп. Извиняюсь, не уведел, что SysInternals это сайт. Поищу эти утилиты. |
||||
|
|||||
| Kamil |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 26.11.2006 Репутация: нет Всего: нет |
Никогда не пользовался методом Runtime.exec(String str). Как я понял, чтобы получить результат выполнения этой утилиты , я получаю объект Process, у которого получаю входной поток с помощью getInputStream(), а затем считываю результат из него. Верно?
Добавлено @ 13:32 Только это грубый метод с использованем утилит, ведь у меня на сервере может быть какой - нибудь RedHat, который не знает что такой PsList.exe или PsLoggedOn.exe |
|||
|
||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
Так об этом я и говорил!
Да. -------------------- 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. |
||||
|
|||||
| Kamil |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 26.11.2006 Репутация: нет Всего: нет |
Если есть такие утилиты, то наверное их можно сделать на Java.
Неужели нет программ на подобие этой?
Не знаю верно это или нет, но как мне кажется может есть какой то протокол и порт по которому машины могут обмениваться информацией, а если конкретно, какая используется ОС, информация о пользователе, о параметрах машины. |
|||
|
||||
| tux |
|
|||
![]() Летатель ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1853 Регистрация: 10.2.2005 Где: msk.ru Репутация: 5 Всего: 132 |
Протокол и порт может и есть, вот только... Порт - это суть логический интерфейс, через которые приложения могут обмениваться данными. Чтобы порт выдавал какую-то информацию нужно чтобы на этот порт прослушивало какое-то приложение. В вашем случае это должен быть какой-то сервис, который будет выдавать информацию об ОС, пользователе, параметрах машины и т.п. Вы этот сервис сами собираетесь писать? Ни одна из известных мне операционных систем такого сервиса не предоставляет. Каким образом собираетесь гарантировать, что сервис запущен? Наверное есть. Только поймите, наконец, программа на Java работает внутри Java-машины и не имеет никакого доступа ни к оборудованию машины ни к сервисам операционной системы за исключением того, что ей явно предоставляет JVM. Поэтому чтобы получить сведения о пользователе и аппаратуре машины придется использовать сервисы ОС либо напрямую работать с оборудованием. На Java это сделать НЕВОЗМОЖНО. Можно лишь вызвать из Java зависимый от платформы код, написанный для конкретной ОС и процессора. Разумеется, то, что у вас работало в одной операционной системе в другой скорее всего не будет, поэтому придется это учитывать. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
По этому вопросу вообщем согласен с tux, за исключением одного:
Вообщем они предоставляют такие сервисы (чем PsUtils и пользуются), только: а) для разных версий ОС они могут варьироваться или поддерживаться в неполном объеме б) для разных ОС они совершенно различны с) эта информация приватная, и для ее получения нужен доступ с соответсвующими правами к удаленной системе (пароль администратора в Windows, пароль root в *nix и т.п.) Теоретически можно, т.к. они работают по 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. |
|||
|
||||
| Kamil |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 26.11.2006 Репутация: нет Всего: нет |
Сейчас у меня две главные проблемы:
- сроки выполнения проекта. 2 дня. - выбор решения. Вначале я увидел решение с этими утилитами, хотя у меня возник небольшой технический вопрос. Потом другое решение
Не знаю я что такое JNI, попробую разобраться. И еще. Опять стоит вопрос об используемой ОС у клиента. Не так ли? Ведь я должен знать какие API должен вызывать ? Или где я неправ ? А технический вопроc такой: Если я буду использовать утилиты, то я должен параллельно копировать данную утилиту в пакет с jar-файлом, в котором находится программа. Так вот. Когда я буду вызывать метод Runtime.exec(), то как программа найдет эту утилиту? В текущей папке искать будет? Или с помощью exec-a запустить bat-файл с командой утилиты? |
|||
|
||||
| Kamil |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 26.11.2006 Репутация: нет Всего: нет |
Так. Как будто понял, что такое JNI и как он работает. Теперь другой вопрос.
Я удаленно запрашиваю JNI-функцию. Она должна вернуть мне результат. Пока будем считать, что используется ОС Windows на удаленном компе, вызывается эта функция из dll-ки. Теперь вопрос. Как удаленно вызвать JNI-функцию? Ведь, когда я объявил у себя, что использую native-метод в Java-коде, то подразумевается, что выполнение этого метода будет происходить на локальной библиотеке. Как быть? Добавлено @ 00:49
Еще и получается, что даже если я смогу запустить удаленно JNI-функцию, то потом мне может помешать незнание пароля админа на удаленном компе? Если да, то это очень плохо...... Так. Прежде всего мне надо узнать какие библиотеки использовать для вызова native-методов, потом узнать работает ли это дело удаленно, ну а потом узнать есть ли на это у меня права. Может у кого есть полезная информация по этому поводу? |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Работа с сетью | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |