![]() |
|
Модераторы: 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-методов, потом узнать работает ли это дело удаленно, ну а потом узнать есть ли на это у меня права. Может у кого есть полезная информация по этому поводу? |
|||
|
||||
| Kamil |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 26.11.2006 Репутация: нет Всего: нет |
Нашел информацию, что JNI -функцию можно вызвать удаленно с помощью RMI. Помогите с примерами. Я не знаю какие API функции использовать для решения моих методов
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
И пример использования JNI, и пример использования RMI есть у нас в FAQ.
-------------------- 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 Репутация: нет Всего: нет |
Мне нужен пример удаленного вызова JNI-функции
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
В чем проблема? Объявляешь функции которые реализует Remote interface - native и все (только не в интерфейсе их объявляй native, а в реализации).
-------------------- 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 Репутация: нет Всего: нет |
Один вопрос, библиотеку я вызываю у клиента. Данные мне будут передаваться по RMI. Так? Это что получается у клиента должен быть запущен сервер, который будет слушать порт для нужного мне объекта ?
Или я совсем запутался что ли? |
|||
|
||||
| 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 Репутация: нет Всего: нет |
Я не пойму. Мне что надо удаленно запустить RMI-сервер, который будет ждать, пока я не запрошу у него объект с native-методом?
Такое возможно? |
|||
|
||||
| shimopus |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 25.8.2006 Репутация: нет Всего: 1 |
Да, именно так и надо делать по твоему замыслу.
|
|||
|
||||
| Kamil |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 34 Регистрация: 26.11.2006 Репутация: нет Всего: нет |
Я не видел примера, чтобы можно было запустить rmiregistry удаленно. ТАк еще же проблема в том, что у клиентов должна быть программа сервера, которая создаст мне объект с native-методом.
Это же не правильно. И tux писал:
Решение tux правильнее:
И надо добавить, что
Моя проблема: создать на сервере класс с native-методом, реализация которой находится на удаленной машине. Вызове метода на сервере приводит к выполнению метода у клиента. Где я не прав? Если нет, то как должно быть? Это сообщение отредактировал(а) Kamil - 29.11.2006, 23:26 |
||||||
|
|||||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
rmiregistry можно запустить где угодно, она используется только для того чтобы клиент и сервер могли друг друга найти. Единственное но, и клиент и сервер должны знать где находится rmiregistry. А вот RMI-server действительно придется запускать у клиента, и как это сделать на автомате я не представляю. Везде На клиенте запускается RMI-server который с помощью native методов получает информацию об этой системе и возвращает ее вызывающему. -------------------- 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-сервер, нужно передать клиенту этот сервер и запустить его. Не так ли ? |
|||
|
||||
| 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 Репутация: нет Всего: нет |
Получается, когда я открываю нужный мне IP-шник, чтобы посмотреть его данные:
- я загружаю на удаленную машину RMI-сервер; - каким-то образом запускаю (неизвестно реально ли это сделать); - затем у себя на сервере вызываю нужную мне объект, который выполнит JNI-функцию на удаленной машине (неизвестно что за JNI-функция, искал в справочнике по WinAPI - не нашел); С первым шагом вроде бы все понятно. Со вторым вообще не понятно (видел чо-то про RMI-callback. Это не то?). C третим тоже, не знаю какую библиотеку надо использовать. Искал в google - чо то не ту. Кстати нет какой нибудь книжки где были бы перечислены все API-функции, библиотеки? Знаю, что в MSDN есть, но у меня проблема установить его сейчас на свой комп. |
|||
|
||||
| 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 Репутация: нет Всего: нет |
Каким то образом работает же PsLoggedOn. И нечего не загружается на клиента. Как будто мне сейчас только эти утилиты помогут. Кстати, как насчет вопроса:
|
||||
|
|||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 19 Всего: 538 |
1. Он использует сервисы предоставляемые Windows 2. Ему требуется указать логин и пароль администратора Точно так же, как это будет делать Пуск\Выполнить, вначале будет искаться в текущем каталоге, потом в PATH. -------------------- 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. |
|||
|
||||
![]()
|
| Правила форума "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. |