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

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

Ответить
Настройки темы
Сбор информации на удаленных ПК

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


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

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


Добрый день!
Народ помогите написать скрипт, который сможет удаленно собирать информацию о версии windows 7 (к примеру "Windows 7 x32 Enterprise (Single User) V6.01 Build 7601 Service Pack 1") на удаленных ПК. Список ПК будет в .txt файле.
И есть ли такая возможно запуска службы удаленный реестр на этих же ПК?

Отправлено: 10:42, 25-11-2011

 

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


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

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


Данный о версии системы находятся в:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion

"CSDVersion" = Service Pack 1
"CurrentBuild" = 7601
"ProductName" = Windows 7 Enterprise

Отправлено: 11:03, 25-11-2011 | #2



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

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


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


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

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


Написал вот такой скрипт на сбор информации о версии W7, но если служба удаленный реестр потушена, то все плохо...

Кто подскажет как можно удаленно запустить службу удаленный реестр или откуда (возможно из файла?) можно достать информации о версии w7?



TrayTip ("Status", "Выберите файл", 5, 1)
Opt ( "TrayAutoPause", 0)
$open = FileOpenDialog("Выберите файл", @DesktopDir & "\AUTOIT", "Текстовый документ (*.txt)", 1)
If @error = 1 Then Exit
$file = FileOpen ($open, 0)
FileDelete ("check_version_os.txt")


While 1
$line = FileReadLine($file)
If @error = -1 Then ExitLoop
$P = Ping ( $line, 10) ; Провека доступности узла посредсвом ICMP запросов
If $P = 0 Then
$a = "Недоступен"
FileWrite ("check_office_log.txt", $line&@TAB&"="&@TAB&$a&@CRLF)
EndIf
If $P > 0 Then
$ProductName = RegRead("\\"&$line&"\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName")
$CurrentBuild = RegRead("\\"&$line&"\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CurrentBuild")
$CSDVersion = RegRead("\\"&$line&"\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "CSDVersion")
FileWrite ("check_version_os.txt", $line&@TAB&"="&@TAB&$ProductName&@TAB&"="&@TAB&$CurrentBuild&@TAB&"="&@TAB&$CSDVersion&@CRLF)
EndIf
Wend

TrayTip ("Status", "Завершено", 3, 1)
FileClose($file)
FileClose($open)

Отправлено: 11:35, 25-11-2011 | #3


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


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

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


Народ, помогите написать 2 функции...

Обе работают с програмой: "sc"

1. Первая состоит из 3-х переменных: _function_1 ($pc_name, $service_name, $tipe)
1.1. Сперва проверяет тип запуска службы и если тип запуска = "$tipe" ( вот так: "sc \\$pc_name config $service_name start= $tipe" ), то выход.
1.2. Если тип запуска службы не равен "$tipe", то она выставляет меняет её значение на "$tipe" и выходит.


2. Вторая состоит из 3-х переменных: _function_2 ($pc_name, $service_name, $action)
2.1. Cверяет совпадает статус службы с $action (запуск, стоп) , если да то выход.
2.2. Если нет, то функция запускает, останавливает ($action равен или stop или start) нужную службу ($service_name) на заданном ПК ($pc_name).

Запуск службы на удаленном пк происходит через команду sc \\pc start RemoteRegistry

Отправлено: 16:22, 25-11-2011 | #4


Ветеран


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

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


HFShak, не проще ли и надёжней использовать технологию Wbem (она же в простонародье WMI) для сбора потребных сведений с удалённых машин?
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:50, 25-11-2011 | #5


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


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

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


Спасибо. А можно какой-нибудь пример скрипта сбора информации с удаленной машины?

Отправлено: 17:02, 26-11-2011 | #6


Ветеран


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

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


HFShak, в принципе, практически любой WSH скрипт, использующий Wbem, может быть с лёгкостью переписан на AutoIt. Здесь я приводить примеры не буду, ибо Вы можете легко найти их непосредственно в Русском сообществе AutoIt: WMI site:http://autoit-script.ru - Поиск в Google (тамошний родной поиск работает только после регистрации).
Это сообщение посчитали полезным следующие участники:

Отправлено: 17:57, 26-11-2011 | #7


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


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

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


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

Как сделать так, чтобы скрипт проверял тип запуска службы на удаленном ПК и если она соответствует $sServiceName, то он переходил в следующему по списку ПК?
И если вдруг нету доступа к удаленно машине, он не прерывал скрипт а так же переходил в следующему оп списку ПК и делал запись об этом событии в log.txt...


Вот сам код:
Код: Выделить весь код
$open = FileOpenDialog("Выберите файл", @DesktopDir & "\AUTOIT", "Текстовый документ (*.txt)", 1)
If @error = 1 Then Exit
$file = FileOpen ($open, 0)
FileDelete ("run_services.txt")

$iCounterSuccess = 0
$iCounterError = 0
$sChangeMode = "Automatic" ; режимы запуска: "Manual", "Automatic", "Disabled"
$sServiceName = "RemoteRegistry"


While 1
    $line = FileReadLine($file)
	If @error = -1 Then ExitLoop
                $P = Ping ( $line, 10) ; Провека доступности узла посредсвом ICMP запросов
							   If $P = 0 Then 
								   $a = "Недоступен"
								   $iCounterError = $iCounterError + 1
								   FileWrite ("run_services.txt", $line & @TAB & "=" & @TAB & $a & @CRLF)
							   EndIf
							   If $P > 0 Then
								   $a = "Доступен"
								   $objWMIService = ObjGet("winmgmts:\\" & $line & "\root\CIMV2")
								   $objShare = $objWMIService.Get("Win32_Service.Name='" & $sServiceName & "'") ; переменной присваивается имя службы
							       $objInParam = $objShare.Methods_("ChangeStartMode").inParameters.SpawnInstance_()
								   $objInParam.Properties_.Item("StartMode") =  $sChangeMode ; переменной присваивается тип запуска службы
								   $objOutParams = $objWMIService.ExecMethod("Win32_Service.Name='" & $sServiceName & "'", "ChangeStartMode", $objInParam)
                    		       FileWrite ("run_services.txt", $line & @TAB & "=" & @TAB & $a & @TAB & "=" & @TAB & $sServiceName & @TAB & "=" & @TAB & $sServiceName & @CRLF)
								   $iCounterSuccess = $iCounterSuccess + 1
							   EndIf	   
WEnd								   
FileWrite ("run_services.txt", "Количество доступных ПК  "&@TAB&@TAB&"="&@TAB&$iCounterSuccess&@CRLF)
FileWrite ("run_services.txt", "Количество недоступных ПК"&@TAB&@TAB&"="&@TAB&$iCounterError&@CRLF)

Отправлено: 18:55, 26-11-2011 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - Сбор информации о железе удаленных ПК OstJoker Скриптовые языки администрирования Windows 9 21-11-2012 13:38
Сбор информации по файлам Serg2010 AutoIt 1 14-11-2011 10:35
AD и сбор информации о клиентском ПО Trinux Microsoft Windows NT/2000/2003 1 07-09-2011 14:37
PowerShell - Сбор сведений на удаленных компьютерах и вывод в консоль tarasov.evgeny Скриптовые языки администрирования Windows 2 18-03-2011 17:19
Сбор информации и разные IP User15 Хочу все знать 7 30-12-2010 11:49




 
Переход