|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Автоматизация изменения данных авторизации на устройстве |
|
Любой язык - Автоматизация изменения данных авторизации на устройстве
|
Пользователь Сообщения: 51 |
Профиль | Отправить PM | Цитировать
Добрый день.
Господа, подскажите пожалуйста, каким способом можно решить такую задачу: 1) Есть большая куча устройств с возможностью подключения к ним через web морду, данные устройства имеют авторизацию (login/password)(см. auth.jpg). 2) Данное устройство имеет несколько учетных записей. (admin/service/ и т.д.) (см. user.jpg) 3) Изменения пароля для всех учетных записей можно сделать только под учетной записью admin. Задача: Необходимо изменить стандартный пароль для нескольких учетных записей, причем на большей половине устройств пароли уже изменены и трогать их не нужно. Как я вижу в общих чертах решение: Подключаемся к устройству, пытаемся авторизоваться под стандартным логином и паролем, если авторизация успешна то меняем пароль для учетных записи. Так же нужно учитывать что предварительно пароли уже нагенерированы для каждого IP устройства и лежать в файлике... |
|
Отправлено: 11:05, 08-02-2019 |
Пользователь Сообщения: 51
|
Профиль | Отправить PM | Цитировать любой, но желательно csv с любым разделителем, что бы потом удобно было выгружать в exel и анализировать...
|
Отправлено: 22:20, 11-02-2019 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 51
|
Профиль | Отправить PM | Цитировать а подскажите VBS с exel работает примерно по такой технологии?
Sub Get_Value_From_Close_Book_Formula() Dim sPath As String, sFile As String, sShName As String sPath = "C:\Documents and Settings\" '" sFile = "Книга1.xls" '" sShName = "Лист1" '" Application.DisplayAlerts = 0 With Range("A1:A100") .Formula = "='" & sPath & "[" & sFile & "]" & sShName & "'!" & "A1" '" '"A1" - указывается начальная ячейка диапазона, из которого необходимо получить значения .Value = .Value End With Application.DisplayAlerts = 1 End Sub |
Отправлено: 22:56, 12-02-2019 | #12 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Ну, смотрите:
Скрытый текст
Option Explicit 'Const READYSTATE_COMPLETE = 4 'Dim objIE Dim objRange Dim arrRow Dim boolIsFirstRow Dim i With WScript.CreateObject("Excel.Application") With .Workbooks.Open("C:\Мои проекты\0244\ip-collector-025.xlsx") With .Worksheets.Item(1) If .AutoFilterMode Then boolIsFirstRow = True For Each objRange In .AutoFilter.Range.Rows If boolIsFirstRow Then boolIsFirstRow = False arrRow = .Application.Transpose(.Application.Transpose(objRange.Value2)) WScript.Echo Join(arrRow, vbTab) WScript.Echo "--------------------------" Else arrRow = .Application.Transpose(.Application.Transpose(objRange.Value2)) WScript.Echo Join(arrRow, vbTab) 'For i = LBound(arrRow) To UBound(arrRow) ' WScript.Echo arrRow(i) 'Next End If Next Else WScript.Echo "Probably no Autofilter in first worksheet in this workbook." End If End With .Close End With .Quit End With 'Set objIE = WScript.CreateObject("InternetExplorer.Application") ' 'With objIE ' .Visible = False ' .Navigate "http://admin:password@10.37.167.114/chgpassw.htm" ' ' Do ' WScript.Sleep 100 ' Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE ' ' ' With .Document.forms("frm") ' .elements("user_no").value = "130" ' ' .submit() ' End With ' ' Do ' WScript.Sleep 100 ' Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE ' ' With .Document.forms("frm") ' .elements("oldpassw").value = "password" ' .elements("newpassw1").value = "Passwordnew" ' .elements("newpassw2").value = "Passwordnew" ' ' .submit() ' End With ' ' .Visible = True 'End With ' 'Set objIE = Nothing WScript.Quit 0 Содержимое столбцов будет построчно появляться в массиве arrRow(). Что есть что на Рабочем листе — смотрите сами, мне мало о чём говорят поля site и service. Примерный облагороженный вид Вашего кода — под комментариями. Запись в файл простая — создали (или открыли для добавления и пишете, в конце — закрываете. Например, запишем всё содержимое рабочего листа в текстовый файл: Скрытый текст
Option Explicit 'Const READYSTATE_COMPLETE = 4 'Dim objIE Dim objRange Dim arrRow Dim boolIsFirstRow Dim i Dim objFSO Dim objTS Set objFSO = WScript.CreateObject("Scripting.FileSystemObject") With WScript.CreateObject("Excel.Application") With .Workbooks.Open("C:\Мои проекты\0244\ip-collector-025.xlsx") With .Worksheets.Item(1) If .AutoFilterMode Then boolIsFirstRow = True Set objTS = objFSO.CreateTextFile("C:\Мои проекты\0244\ip-collector-025.csv", True) For Each objRange In .AutoFilter.Range.Rows If boolIsFirstRow Then boolIsFirstRow = False arrRow = .Application.Transpose(.Application.Transpose(objRange.Value2)) WScript.Echo Join(arrRow, vbTab) WScript.Echo "--------------------------" objTS.WriteLine Join(arrRow, ",") Else arrRow = .Application.Transpose(.Application.Transpose(objRange.Value2)) WScript.Echo Join(arrRow, vbTab) objTS.WriteLine Join(arrRow, ",") End If Next objTS.Close Set objTS = Nothing Else WScript.Echo "Probably no Autofilter in first worksheet in this workbook." End If End With .Close End With .Quit End With 'Set objIE = WScript.CreateObject("InternetExplorer.Application") ' 'With objIE ' .Visible = False ' .Navigate "http://admin:password@10.37.167.114/chgpassw.htm" ' ' Do ' WScript.Sleep 100 ' Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE ' ' ' With .Document.forms("frm") ' .elements("user_no").value = "130" ' ' .submit() ' End With ' ' Do ' WScript.Sleep 100 ' Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE ' ' With .Document.forms("frm") ' .elements("oldpassw").value = "password" ' .elements("newpassw1").value = "Passwordnew" ' .elements("newpassw2").value = "Passwordnew" ' ' .submit() ' End With ' ' .Visible = True 'End With ' 'Set objIE = Nothing WScript.Quit 0 Мне, правда, не очень понятно, зачем писать именно в текстовый файл, чтобы открывать его потом в Excel, вместо того, чтобы зараз писать непосредственно в Рабочую книгу Excel, коль мы так и так Excel пользуем в коде. |
Отправлено: 00:00, 13-02-2019 | #13 |
Пользователь Сообщения: 51
|
Профиль | Отправить PM | Цитировать Спасибо огромное.
Немного не понял вот эти части скрипта : и IP и пароли не из файла берутся?? |
Отправлено: 00:14, 13-02-2019 | #14 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 00:36, 13-02-2019 | #15 |
Пользователь Сообщения: 51
|
Профиль | Отправить PM | Цитировать Понял, сейчас постараюсь донести мои мысли
Сюда мы должны подставить IP из присланного мной файлика. Столбец "A". http://admin:password не трогаем, это дефолтная данные авторизации. Сюда подставить 2 раза пароль взятый из столбца "C" И вывести результат в файл, даже можно и в этот файл в пустые столбцы, допустим "F;G и т.д." т.е. задумка в чем, скрипт подключается по всем IP адресам из этого файла, пробует авторизоваться под стандартным admin/password, если ему это удается, то он меняет пароль на тот который в столбце "C". Если авторизация не успешна на каком то из IP, это нам говорит о том что там пароль не дефолтный и делать соответственно нам с ним нечего не надо, продолжаем проверять остальные строки... столбы с названием SITEID это просто номинальный номер устройства(для быстрого поиска). Столбец с названием Serviсe нас тоже не интересует. |
Последний раз редактировалось Armsinglom, 13-02-2019 в 00:58. Отправлено: 00:53, 13-02-2019 | #16 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Пробуйте (по понятным причинам — не проверялось):
Скрытый текст
Option Explicit Const READYSTATE_COMPLETE = 4 Dim objIE Dim objRange Dim arrRow Dim boolIsFirstRow Set objIE = Nothing With WScript.CreateObject("Excel.Application") With .Workbooks.Open("C:\Мои проекты\0244\ip-collector-025.xlsx") With .Worksheets.Item(1) If .AutoFilterMode Then boolIsFirstRow = True For Each objRange In .AutoFilter.Range.Rows If boolIsFirstRow Then boolIsFirstRow = False Else arrRow = .Application.Transpose(.Application.Transpose(objRange.Value2)) If objIE Is Nothing Then Set objIE = WScript.CreateObject("InternetExplorer.Application") End If With objIE .Navigate "http://admin:password@" & arrRow(0) & "/chgpassw.htm" Do WScript.Sleep 100 Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE With .Document.forms("frm") .elements("user_no").value = "130" .submit() End With Do WScript.Sleep 100 Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE With .Document.forms("frm") .elements("oldpassw").value = "password" .elements("newpassw1").value = arrRow(2) .elements("newpassw2").value = arrRow(2) .submit() End With ' А результат-то где?! End With End If Next Else WScript.Echo "Probably no Autofilter in first worksheet in this workbook." End If End With .Close End With .Quit End With If Not objIE Is Nothing Then objIE.Quit Set objIE = Nothing End If WScript.Quit 0 Цитата Armsinglom:
|
|
Отправлено: 01:16, 13-02-2019 | #17 |
Пользователь Сообщения: 51
|
Профиль | Отправить PM | Цитировать ошибка... прикрепил скрин
|
Отправлено: 01:35, 13-02-2019 | #18 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 01:48, 13-02-2019 | #19 |
Пользователь Сообщения: 51
|
Профиль | Отправить PM | Цитировать Другая ошибка...
|
Отправлено: 01:55, 13-02-2019 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Автоматизация изменения сетевых настроек | Fantastish | Скриптовые языки администрирования Windows | 4 | 18-07-2016 10:05 | |
Любой язык - [решено] Автоматизация экспорта данных из Excel | Fantastish | Скриптовые языки администрирования Windows | 10 | 30-05-2016 18:41 | |
PowerShell - Автоматизация создания/отключения и изменения данных учетные записи | lordsharks | Скриптовые языки администрирования Windows | 12 | 15-03-2016 12:21 | |
2007 - [решено] автоматизация переструктурирования данных | golovatov | Microsoft Office (Word, Excel, Outlook и т.д.) | 4 | 06-10-2015 12:20 | |
CMD/BAT - [решено] автоматизация изменения имени пользователя через control userpasswords2? | super_bitard | Скриптовые языки администрирования Windows | 4 | 05-04-2011 11:36 |
|