Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Автоматизация изменения данных авторизации на устройстве

Ответить
Настройки темы
Любой язык - Автоматизация изменения данных авторизации на устройстве

Пользователь


Сообщения: 51
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изображения
Тип файла: jpg auth.JPG
(37.9 Kb, 6 просмотров)
Тип файла: jpg user.jpg
(31.3 Kb, 4 просмотров)
Добрый день.
Господа, подскажите пожалуйста, каким способом можно решить такую задачу:
1) Есть большая куча устройств с возможностью подключения к ним через web морду, данные устройства имеют авторизацию (login/password)(см. auth.jpg).
2) Данное устройство имеет несколько учетных записей. (admin/service/ и т.д.) (см. user.jpg)
3) Изменения пароля для всех учетных записей можно сделать только под учетной записью admin.
Задача:
Необходимо изменить стандартный пароль для нескольких учетных записей, причем на большей половине устройств пароли уже изменены и трогать их не нужно.

Как я вижу в общих чертах решение:
Подключаемся к устройству, пытаемся авторизоваться под стандартным логином и паролем, если авторизация успешна то меняем пароль для учетных записи. Так же нужно учитывать что предварительно пароли уже нагенерированы для каждого IP устройства и лежать в файлике...

Отправлено: 11:05, 08-02-2019

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


У меня строка 37 — «Do». Покажите получившийся у Вас код.

Отправлено: 02:32, 13-02-2019 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 51
Благодарности: 0

Профиль | Отправить 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:\Users\gzg\Desktop\ip.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(1) & "/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(3)
								.elements("newpassw2").value = arrRow(3)
								
								.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

Отправлено: 10:18, 13-02-2019 | #22


Пользователь


Сообщения: 51
Благодарности: 0

Профиль | Отправить PM | Цитировать


Получается что ругается вот на это:
Код: Выделить весь код
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)

и ругаются на одну и туже строку.

Последний раз редактировалось Armsinglom, 14-02-2019 в 00:16.


Отправлено: 23:36, 13-02-2019 | #23


Пользователь


Сообщения: 51
Благодарности: 0

Профиль | Отправить PM | Цитировать


Возобновлю тему.
Мне удалось заставить работать скрипт (проблема была вызвана с ограничениями на rdp).
Код: Выделить весь код
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:\Users\gzg\Desktop\ip.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(1) & "/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(3)
								.elements("newpassw2").value = arrRow(3)
								
								.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
Есть пару проблем,
1) он почему то работает только с последним ip из списка
Код: Выделить весь код
With .Workbooks.Open("C:\Users\gzg\Desktop\ip.xlsx"
)
2) Так же есть проблема, если вдруг стандартный логин/пароль который указан в скрипте не подошел, то выскакивает окно для повторной попытки ввода логин/пароль. Из за проблемы которая в пункте 1, я не пойму будет он работать дальше, несмотря на ошибку авторизации или будет ждать пока я ввиду вручную корректные логин/пароль.

Отправлено: 21:41, 11-09-2019 | #24


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Armsinglom:
1) он почему то работает только с последним ip из списка »
Он работает со всеми строками из диапазона автофильтра:
Код: Выделить весь код
For Each objRange In .AutoFilter.Range.Rows
Цитата Armsinglom:
2) Так же есть проблема, если вдруг стандартный логин/пароль который указан в скрипте не подошел, то выскакивает окно для повторной попытки ввода логин/пароль. Из за проблемы которая в пункте 1, я не пойму будет он работать дальше, несмотря на ошибку авторизации или будет ждать пока я ввиду вручную корректные логин/пароль. »
Без понятия. Вставляйте отладочные WScript.Echo "…" и смотрите.

Отправлено: 22:38, 11-09-2019 | #25



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Автоматизация изменения данных авторизации на устройстве

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
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




 
Переход