Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Автоматизация администрирования

Автор: RussianBear
Дата сообщения: 15.04.2005 11:17
AlexSSS и прочим...

Забавно, но только что для себя написал vbs-скрипт который делает почти то что нужно...

Вкратце алгоритм такой:

1. Смотрим, кто залогинился (logon name, например "sidorov")
2. Зная что у нас пользователь sidorov делаем запрос по LDAP к AD.
3. Прописываем значения которые получили из AD (я использовал только displayName, мне больше не надо) в реестр в нужное место - "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters"
"srvcomment").
4. Передергиваем службу lanmanserver что бы изменения вступили в силу

Минус:
Скрипт рассчитан на W2k машины, включенные в домен (мне подходит идеально, так как сеть весьма однородна). Для W9x его придется доработать + среда выполнения vbs там по умолчанию не присутствует...
Автор: AlexSSS
Дата сообщения: 15.04.2005 12:28
RussianBear, проблема в том, что обычный пользователь в 2000/XP не имеет прав на запись на HKEY_LOCAL_MACHINE.
Для этого надо быть локальным админом, либо, как минимум, Power User (надо проверить). А давать такие права обычным пользователям - это уменьшение безопасности на порядок.
Как вариант, можно через политики на время дать обычным пользователям права на изменение "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\LanmanServer\Parameters", но потом эту дырку следует убрать.

> 4. Передергиваем службу lanmanserver что бы изменения вступили в силу
а это мысль, честно говоря я не сообразил, что можно обойтись рестартом сервиса, чтобы изменения вступили без перезагрузки
Автор: ironwit
Дата сообщения: 15.04.2005 12:33
RussianBear
AlexSSS
Всем спасибо... Буду пробовать... Но в принципе пока решил просто через подкл. к удаленному компьютеру и смена описания.
Автор: RussianBear
Дата сообщения: 15.04.2005 14:13
AlexSSS

Ну если права дать на определенную ветку, как ты сказал - то это не такая уж и дырка...Разве что очень талантливые с этого что-то поимеют...
Хотя, формально, конечно - потенциальная уязвимось.
Автор: valerry
Дата сообщения: 18.04.2005 12:17
agatrid
так точно. логины, пароли, профили тоже можно.
Автор: IGOLNI
Дата сообщения: 19.04.2005 13:24
Есть небольшая проблемка. Подключаю сетевой ресурс для пользователя скриптом
var WshNetwork = WScript.CreateObject ("WScript.Network");
WshNetwork.MapNetworkDrive ("k:", "\\\\server\\resurs", "false" );
Скрипт лежит в автозагрузке. На рабочем столе есть ярлыки на этот ресурс, однако они без значков. Если на рабочем столе сказать "Обновить", значки появляются. Думаю проблема в том, что на момент создания рабочего стола ресурс еще не подключен. Можно ли добавить в этот скрипт что-то, чтобы обновить рабочий стол после подключения сетевого ресурса?
Автор: RussianBear
Дата сообщения: 19.04.2005 15:42
IGOLNI

1) Гугл дал вот такую вот ссылку http://groups.google.com/groups?selm=%23L7GyEFWDHA.1280%40tk2msftngp13.phx.gbl

т.е. метод заключается в посыле F5 на desktop....

2) Можно попробовать и ярлык создавать динамически. Может это решить проблему с обновлением и значек будет отображаться как надо?

3) Мапирование диска можно попробовать сделать путем прописывания соответствующего ключика в реестр.
Как показала практика, мапирование принтеров в этом случае происходит намного быстрее...
Автор: Jovanotti
Дата сообщения: 19.04.2005 16:47
IGOLNI
Попробуй положи скрипт
в %Systemroot%\system32\GroupPolicy\Machine\STARTUP
Если домен есть, то сам понимаешь куда в єтом случае.
Скрипт будет стартовать ДО входа любого юзера.
Автор: Alan Mon
Дата сообщения: 19.04.2005 17:40
Jovanotti
Не прокатит. Машинный логон проходит от имени SYSTEM, а у него по умолчанию нет доступа в сеть.
Автор: AlexSSS
Дата сообщения: 20.04.2005 08:05
как можно инсталлировать скриптом фонт на компе (Windows XP)?
Либо, как можно инсталлировать фонт на удаленном компе (Windows XP)?

Варианты Remote Connection или VNC не подходят
Автор: valerry
Дата сообщения: 20.04.2005 09:27
такие монстры собрались, и никто не знает как перенести аккаунты...
shame on you.
Автор: Uriu
Дата сообщения: 22.04.2005 04:02
AlexSSS
Может быть можно использовать (только предполагаю)
Set obj= objWMIService.Get("Win32_Product")
Там есть метод obj.Install("путь")
В WMI CIM Studio посмотрите.




Автор: AlexSSS
Дата сообщения: 25.04.2005 16:36
проблема с инсталляцией драйвера принтера под XP

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
objWMIService.Security_.Privileges.AddAsString "SeLoadDriverPrivilege", True

Path = "C:\PI1800"

Set objDriver = objWMIService.Get("Win32_PrinterDriver")
objDriver.SupportedPlatform = "Windows NT x86"
objDriver.Version = "3"
objDriver.Name = "Minolta Pi1800"
objDriver.FilePath = Path
objDriver.InfName = "ntprint.inf"
errResult = objDriver.AddPrinterDriver(objDriver)

пробовал кучу вариантов, в лучшем случае выдает код ошибки 87
Автор: RussianBear
Дата сообщения: 25.04.2005 20:28
Возникла необходимость прочитать SID локальной группы на W2k.
Может кто нибудь делал такое на vbs или других скриптовых языках?
Автор: AlexSSS
Дата сообщения: 25.04.2005 21:01
RussianBear

List Local Groups Using WMI

On Error Resume Next

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_Group Where LocalAccount = True")

For Each objItem in colItems
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Domain: " & objItem.Domain
Wscript.Echo "Local Account: " & objItem.LocalAccount
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "SID: " & objItem.SID
Wscript.Echo "SID Type: " & objItem.SIDType
Wscript.Echo "Status: " & objItem.Status
Wscript.Echo
Next
Автор: RussianBear
Дата сообщения: 26.04.2005 07:15
AlexSSS

Спасибо, добрый человек!!!!

Вообще в конце концов сам нашел этот примерчик...стыжусь...искать надо было лучше.

Еще раз СПАСИБО что откликнулся!
Автор: Jovanotti
Дата сообщения: 26.04.2005 09:36
Alan Mon

Цитата:
Машинный логон проходит от имени SYSTEM, а у него по умолчанию нет доступа в сеть

Возможно.
Как у меня ....
Домен, 2003, клиенты XP SP2
GPO Connect_network_drive (Раздел Computer Configurationstartup script ) -- написал пару строк подключения сетевого диска.
Скрипт выполняется на этапе старта машины.
Подключается диск без проблем.
Единственное что метка у него прописывается Disconnected network drive
Но доступен и все ОК.

Автор: FreemanRU
Дата сообщения: 26.04.2005 09:47

Цитата:
Машинный логон проходит от имени SYSTEM, а у него по умолчанию нет доступа в сеть

Как это нет???? Есть конечно. логин происходит от имени COMP_NAME$. Н-р это хорошо видно на примере IIS, когда тот складывает логи в SQL.
Автор: WildCat
Дата сообщения: 26.04.2005 10:10
Ткните пожалуйста в решение: надо на нескольких десятках компов в домене добавить ключик в registry. Active Directory нет -- домен под Самбой.
Автор: AlexSSS
Дата сообщения: 26.04.2005 10:27
WildCat, клиенты XP?
в этом случае достаточно с помощью PsExec (из PsTools, Sysinternals - www.sysinternals.com) на удаленном компе запустить либо скрипт, который сделает все, что надо, либо вообще REG файл, который занесет нужные значения в реестр.

Либо это можно сделать с помощью скрипта с WMI, который будет подключаться к удаленному компу. Практически любой скрипт с WMI начинается с
strComputer = "."
strComputer можно ставить и удаленный компьютер, напр. strComputer = "comp_ivana"

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

Автор: Jovanotti
Дата сообщения: 26.04.2005 14:38
Для реализации удаленного выполнения команды на клиенте
(в нашем случае: пропись в реестр ключа) необходимо

Утилита PSEXEC из пакета PSTOOLS www.sysinternals.com
несколько CMD файлов такого содержания
start.cmd --- стартовый файл запускаи (модуль подключения и доставки)

Код:
@echo on
rem Параметры коммандной строки запуска данного файла
rem параметр %1-admin_name %2-admin_pass
rem Подкючаем сетевой диск целевой машины
net use r: \\comp-3\admin$\system32 /user:%1 %2
rem Копируем рабочие файлы
copy install.cmd r:\ >nul
copy settings.reg r:\ >nul
rem Выполняем рабочие файлы
psexec \\studi-3 install.cmd
rem Отключаем диск
net use r: /delete
Автор: WildCat
Дата сообщения: 27.04.2005 12:09
Хм, а вот что PsExec говорит:

===
PsExec v1.58 - Execute processes remotely
Copyright (C) 2001-2005 Mark Russinovich
Sysinternals - www.sysinternals.com


Error establishing communication with PsExec service on COMP:
All pipe instances are busy.
===

Что это может быть?
Автор: AlexSSS
Дата сообщения: 27.04.2005 12:42
может файрвол?
Автор: Jovanotti
Дата сообщения: 27.04.2005 14:44
WildCat
Пробуй вначале просто подконектись АДМИНОМ к машине

Код: net use r: \\comp\c$ /user:admin pass
Автор: AlexSSS
Дата сообщения: 27.04.2005 22:10
в ветке
http://forum.ru-board.com/topic.cgi?forum=8&topic=10659#1
второе сообщение, я написал небольшую заметку по логон скриптам

заметка размещена там, а не здесь, так как она подводит некоторую базу под последующие скрипты на KIX, которые будут размещены там.
Автор: Mishgunnn
Дата сообщения: 28.04.2005 14:58
Никто не знает как узнать LastLogon для компьютера? В ADSI Edit у computer'ов есть такой атрибут, но реально он не работает, ошибка выдается. Поискал в гугле, нет ничего по моей проблеме. Вот тут http://beta.communities.jp.msn.com/WindowsScript/general.msnw?action=get_message&mview=0&ID_Message=8925&LastModified=4675463253467036695

У товарища тоже не работает. У меня такая же ошибка про неподдерживаемый метод. Некоторые решают такую проблему через PwdLastSet, но даже если это работает, у меня есть терминальные серверы и если пользователь поменяет пароль в терминальном сервере,то у рабочего компа этот атрибут не смениться.

Сейчас сделал логон-скрипт, который создает файл с названием как имя компа, потом с помощью этих файлов можно устаревшие компы отловить. Но придется ждать несколько месяцев. Может кто-нибудь все таки знает как LastLogon для компьютера узнать?
Автор: AlexSSS
Дата сообщения: 28.04.2005 15:07
> В ADSI Edit у computer'ов есть такой атрибут, но реально он не работает
лови работающий скрипт. Вставь его в excel и получишь все даты

правда почему надо брать LastLogin, хотя в ADSI Edit виден аттрибут LastLogon, я так и не понял

Sub test()

Cells.ClearContents
On Error Resume Next

Set objOU = GetObject("LDAP://cn=computers,dc=dom1,dc=dom2")

n = 0
For Each obj In objOU
n = n + 1
Cells(n, 1).Value = obj.cn
Cells(n, 2).Value = obj.LastLogin
Next

End Sub
Автор: Mishgunnn
Дата сообщения: 02.05.2005 13:53
AlexSSS - тебе гранд-биг-респект и мега-спасибо!!!
Я все перепутал и там действительно все как ты говоришь.
И твоя процедурка работает замечательно!!!!
Оказывается я не только начинающий скриптолог, но и какой-то невнимательный
Автор: AlexSSS
Дата сообщения: 02.05.2005 14:22
Mishgunnn, здесь дело не только в твоей невнимательности
В ADSI Edit и на компьютере и на юсере действительно стоит свойство LastLogon. Почему работает LastLogin (которого там нет!!!), я сам не понимаю ;o) Просто вспомнил, что у меня был работающий скрипт, который брал время последнего логона пользователя и там у меня почему-то стоял LastLogin
Автор: Mishgunnn
Дата сообщения: 02.05.2005 15:34
AlexSSS
Может еще раз поможешь? С компьютерами разобрался, взялся за юзеров, а с ними еще непонятнее Нужно получить список пользователей и время их последнего логона. Написал код, а вместо lastLogon пустые значения получаются, а пользователи нормально всталяются. Если заменить lastLogon на lastLogin, то пишет ошибка в строке где Set objRecordset = objCommand.Execute написано (это конечно если ошибки включить). Совсем что-то тоскливо с этими логонами....

On Error Resume Next
Const ADS_UF_ACCOUNTDISABLE = 2
Set objConnection = CreateObject("ADODB.Connection")
objConnection.Open "Provider=ADsDSOObject;"
Set objCommand = CreateObject("ADODB.Command")
objCommand.ActiveConnection = objConnection
objCommand.CommandText = _
"<GC://dc=my domain ,dc=ru>;(objectCategory=User)" & _
";samAccountName,lastLogon;subtree"
Set objRecordset = objCommand.Execute
n = 0
While Not objRecordset.EOF
n = n + 1
Cells(n, 1).Value = objRecordset.Fields("samAccountName").Value
Cells(n, 2).Value = objRecordset.Fields("lastLogon").Value
objRecordset.MoveNext
Wend

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Зеркалирование дисков Win2000


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.