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

Компьютерный форум 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

 

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


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

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


любой, но желательно csv с любым разделителем, что бы потом удобно было выгружать в exel и анализировать...

Отправлено: 22:20, 11-02-2019 | #11



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

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


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


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

Профиль | Отправить 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
Благодарности: 8086

Профиль | Отправить 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
Благодарности: 0

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


Спасибо огромное.
Немного не понял вот эти части скрипта :
Код: Выделить весь код
Navigate "http://admin:password@10.37.167.114/chgpassw.htm"
и
Код: Выделить весь код
'		.elements("oldpassw").value = "password"
'		.elements("newpassw1").value = "Passwordnew"
'		.elements("newpassw2").value = "Passwordnew"
IP и пароли не из файла берутся??

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


Ветеран


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

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


Цитата Armsinglom:
Немного не понял вот эти части скрипта : »
Это Ваш код.

Цитата Armsinglom:
IP и пароли не из файла берутся?? »
Вы же не привели соответствия между перечисленным и полями в присланной Рабочей книге. Приведёте, что откуда брать — продолжим.

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


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


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

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


Понял, сейчас постараюсь донести мои мысли
Код: Выделить весь код
Navigate "http://admin:password@10.37.167.114/chgpassw.htm"
Сюда мы должны подставить IP из присланного мной файлика. Столбец "A". http://admin:password не трогаем, это дефолтная данные авторизации.
Код: Выделить весь код
.elements("newpassw1").value = "Passwordnew"
.elements("newpassw2").value = "Passwordnew"
Сюда подставить 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
Благодарности: 8086

Профиль | Отправить 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
Благодарности: 0

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


Изображения
Тип файла: jpg 333.JPG
(22.8 Kb, 3 просмотров)

ошибка... прикрепил скрин

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


Ветеран


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

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


Давайте попробуем поменять:
Код: Выделить весь код
.Navigate "http://admin:password@" & arrRow(1) & "/chgpassw.htm"
…
.elements("newpassw1").value = arrRow(3)
.elements("newpassw2").value = arrRow(3)

Отправлено: 01:48, 13-02-2019 | #19


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


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

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


Изображения
Тип файла: jpg 444.JPG
(22.0 Kb, 3 просмотров)

Другая ошибка...

Отправлено: 01:55, 13-02-2019 | #20



Компьютерный форум 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




 
Переход