Автоматизация изменения данных авторизации на устройстве
Вложений: 2
Добрый день.
Господа, подскажите пожалуйста, каким способом можно решить такую задачу: 1) Есть большая куча устройств с возможностью подключения к ним через web морду, данные устройства имеют авторизацию (login/password)(см. auth.jpg). 2) Данное устройство имеет несколько учетных записей. (admin/service/ и т.д.) (см. user.jpg) 3) Изменения пароля для всех учетных записей можно сделать только под учетной записью admin. Задача: Необходимо изменить стандартный пароль для нескольких учетных записей, причем на большей половине устройств пароли уже изменены и трогать их не нужно. Как я вижу в общих чертах решение: Подключаемся к устройству, пытаемся авторизоваться под стандартным логином и паролем, если авторизация успешна то меняем пароль для учетных записи. Так же нужно учитывать что предварительно пароли уже нагенерированы для каждого IP устройства и лежать в файлике... |
Попробовал это сделать так, но столкнулся с несколькими проблемами:
Код:
Set objIE = CreateObject("InternetExplorer.Application") 2) Страница изменения пароля открывается, выбирается учетная запись на которой необходимо поменять логин и пароль, но поля oldpassw/newpassw1/newpassw2 не заполняются. Так же хорошо бы что бы скрипт работал со списком IP адресов, логинов, и паролей, ну и был какой то обработчик ошибок. |
Ребят совсем нет идей? Так же скажу, что когда то давно это реализовывали на питоне, но теперь из за безопасной безопасности остались варианты только vbs, js, powershell. Можно с помощью этих инструментов решить задачу?
|
Авторизацию IE удалось обойти через chrome, http://admin:password@10.37.166.114/chgpassw.htm(в IE данный способ авторизации не работает), но непонятно как через chrome работать с элементами....
|
Решил проблему с авторизацией IE:
Создал записи в реестре DWORD с именами iexplore.exe и explorer.exe values = 0. для текущего юзера: HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE Если необходимо для всех юзеров то вот: HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_HTTP_USERNAME_PASSWORD_DISABLE Теперь IE понимает адрес такого формата: http://admin:password@10.37.166.114/chgpassw.htm ,авторизация теперь не выскакивает... Осталось: 1) Научить скрипт брать логин, пароль и IP из файлика. 2) Осталась нерешенная проблема с заполнением полей oldpassw/newpassw1/newpassw2. (выбор юзера на котором будет меняться пароль выбирается корректно.) 3) обработка ошибок. |
Все удалось оживить скрипт, пароль на устройстве изменился!
Код:
Set objIE = CreateObject("InternetExplorer.Application") Код:
objIE.Navigate "http://admin:password@10.37.167.114/chgpassw.htm" Код:
objForm.elements("oldpassw").value = "password" |
Немного доработал скрипт, была проблема с IE, он мог не работать по какой то причине и скрипт не отрабатывал. Добавил фикцию ожидания работоспособности IE:
Код:
Set objIE = CreateObject("InternetExplorer.Application") Но осталась еще задачи которые необходимо решить: 1) Заставить скрипт работать по алгоритму: а) Брать IP для подключения из файлика (пароль и логин стандартные admin/password) б) Если скрипту удалось авторизоваться под стандартными паролем и логином, то изменить его. (предварительно пароли уже есть сгенерированы и лежат в файлике) в) Если авторизация на хосте не прошла, то ничего не делать, просто продолжаем работу с остальными хостами. 2) Сделать вывод результата в файл: а) Не получилось авторизоваться б) Получилось авторизоваться и установить такой-то пароль. в) Хост не доступен |
|
Вложений: 1
Ну на самом деле файл банальный, Exel, с несколькими полями.. (см. 123.jpg). При необходимости конечно, можно и поменять....
При необходимости можно добавить поля стандартного логина и пароля: ip id pass def_login def_pass 10.37.116.114 103 Fsasfasfs5 admin password 10.37.116.115 104 SGssfaasg4 admin password Как правильнее я не знаю, с VBS я на ВЫ... |
И поясните, в какой файл планируется делать вывод. Цитата:
|
любой, но желательно csv с любым разделителем, что бы потом удобно было выгружать в exel и анализировать...
|
а подскажите VBS с exel работает примерно по такой технологии?
Код:
Sub Get_Value_From_Close_Book_Formula() |
Ну, смотрите:
Скрытый текст
Код:
Option Explicit Содержимое столбцов будет построчно появляться в массиве arrRow(). Что есть что на Рабочем листе — смотрите сами, мне мало о чём говорят поля site и service. Примерный облагороженный вид Вашего кода — под комментариями. Запись в файл простая — создали (или открыли для добавления и пишете, в конце — закрываете. Например, запишем всё содержимое рабочего листа в текстовый файл: Скрытый текст
Код:
Option Explicit Мне, правда, не очень понятно, зачем писать именно в текстовый файл, чтобы открывать его потом в Excel, вместо того, чтобы зараз писать непосредственно в Рабочую книгу Excel, коль мы так и так Excel пользуем в коде. |
Спасибо огромное.
Немного не понял вот эти части скрипта : Код:
Navigate "http://admin:password@10.37.167.114/chgpassw.htm" Код:
' .elements("oldpassw").value = "password" |
|
Понял, сейчас постараюсь донести мои мысли :)
Код:
Navigate "http://admin:password@10.37.167.114/chgpassw.htm" Код:
.elements("newpassw1").value = "Passwordnew" И вывести результат в файл, даже можно и в этот файл в пустые столбцы, допустим "F;G и т.д." т.е. задумка в чем, скрипт подключается по всем IP адресам из этого файла, пробует авторизоваться под стандартным admin/password, если ему это удается, то он меняет пароль на тот который в столбце "C". Если авторизация не успешна на каком то из IP, это нам говорит о том что там пароль не дефолтный и делать соответственно нам с ним нечего не надо, продолжаем проверять остальные строки... столбы с названием SITEID это просто номинальный номер устройства(для быстрого поиска). Столбец с названием Serviсe нас тоже не интересует. |
Пробуйте (по понятным причинам — не проверялось):
Скрытый текст
Код:
Option Explicit Цитата:
|
Вложений: 1
ошибка... прикрепил скрин
|
Давайте попробуем поменять:
Код:
.Navigate "http://admin:password@" & arrRow(1) & "/chgpassw.htm" |
Вложений: 1
Другая ошибка...
|
У меня строка 37 — «Do». Покажите получившийся у Вас код.
|
Код:
Option Explicit |
Получается что ругается вот на это:
Код:
Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE Код:
.Navigate "http://admin:password@" & arrRow(1) & "/chgpassw.htm Вообщем при разных запусках скрипта может вылетать две ошибки: - The object invoked has disconnected from its client. (80010108) - Unspecified error (80004005) и ругаются на одну и туже строку. |
Возобновлю тему.
Мне удалось заставить работать скрипт (проблема была вызвана с ограничениями на rdp). Код:
Option Explicit 1) он почему то работает только с последним ip из списка Код:
With .Workbooks.Open("C:\Users\gzg\Desktop\ip.xlsx" 2) Так же есть проблема, если вдруг стандартный логин/пароль который указан в скрипте не подошел, то выскакивает окно для повторной попытки ввода логин/пароль. Из за проблемы которая в пункте 1, я не пойму будет он работать дальше, несмотря на ошибку авторизации или будет ждать пока я ввиду вручную корректные логин/пароль. |
Цитата:
Код:
For Each objRange In .AutoFilter.Range.Rows Цитата:
|
Время: 09:48. |
Время: 09:48.
© OSzone.net 2001-