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

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

Автор: Klesk
Дата сообщения: 28.06.2006 09:59
urel
Я писал:

Цитата:
о загруженности компьютеров и использовании конкретных программ

именно так (по-черному: "кто как юзает софт").

Да я отуда сюда пришел, мрачная прога - ничего хорошего для моей задачи нет. Может кому-то и поможет.

Попробую сам написать (полный ноль в скриптах), если что - сюда буду тыкаться с вопросами.
Автор: FreemanRU
Дата сообщения: 28.06.2006 10:10
Klesk

Цитата:
и приведенное тобой sngProcessTime - тоже время условное и в данной ситуации не подходит

Т.е. почему это условное??? оно показывает использование процессорного времени, т.е. фактически нагрузку, которую создает процесс. Это и есть "загруженность компьютеров". Ибо я могу запустить notepad, и он у меня будет висеть. и что - комп будет загружен?


Цитата:
Попробую сам написать

А что писать-то? Я же тебе всё дал. Создание и удаление. Пиши эти события в базу или файл, и всё.
Автор: urel
Дата сообщения: 28.06.2006 10:20
а кто помешает пользователю просто завершить твой скрипт?

а есл взять пример из букваря

Цитата:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process")

For Each objProcess in colProcessList
colProperties = objProcess.GetOwner(strNameOfUser,strUserDomain)
sngProcessTime = (CSng(objProcess.KernelModeTime) + _
CSng(objProcess.UserModeTime)) / 10000000
Wscript.Echo "Process " & objProcess.Name & " is owned by " _
& strUserDomain & "\" & strNameOfUser & ". " & sngProcessTime
Next


засунуть в GP компьютера, запускать цикл каждую минуту ну а дальше отслеживать не пропалли с пред раза процесс - если да - то писать в файл - имя пользователя - cpu time имя процесса
Автор: AleXeyS55
Дата сообщения: 28.06.2006 10:30
Здравствуйте. Подскажите пожалуйста как написать скрипт который бы при запуске на машине записывал в текстовый файл расшаренные папки и какие комы права на них даны?
Просто вывести список папок не сложно, а вот кому дан доступ и какой...
Автор: FreemanRU
Дата сообщения: 28.06.2006 10:36
urel

Цитата:
кто помешает пользователю просто завершить твой скрипт?

обычный пользвоатель не сможет завершить процессы другого пользвоателя.
Автор: urel
Дата сообщения: 28.06.2006 11:12
FreemanRU
я про то и говорил что скрипт лучше запускать из политик комптютера

Добавлено:
AleXeyS55

глянь тут
Автор: AleXeyS55
Дата сообщения: 29.06.2006 07:31
Что то скрипт не очень работает, во первых ве выдает что я неправильно ввел адрес и предлагает посмотреть помощь, во вторых когда запуска с параметром -f то он пишет что не может создать файл для отчета. Хотя на самом деле файл создается но в нем пусто

Добавлено:
Вопрос со скриптом все еще открыт
Автор: urel
Дата сообщения: 29.06.2006 13:15
AleXeyS55
Вопрос премишенов почти раскрыт =)


Цитата:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colShares = objWMIService.ExecQuery("Select * from Win32_Share")

For each objShare in colShares
    If Right(objShare.Name,1)<>"$" Then
        Wscript.Echo "-----------------------------------------"
     Wscript.Echo "Allow Maximum: " & objShare.AllowMaximum
     Wscript.Echo "Caption: " & objShare.Caption
     Wscript.Echo "Maximum Allowed: " & objShare.MaximumAllowed
     Wscript.Echo "Name: " & objShare.Name
     Wscript.Echo "Path: " & objShare.Path
     WScript.Echo "Type: " & objShare.Type
         GetACL strComputer,objShare.Name,objShare.Path
    End If
Next

Sub GetACL(ServerName, FileShareName,ExplicitPath)    
    On Error Resume Next
    Set objSecurity = GetObject("winmgmts:\\" & ServerName & "\root\cimv2:Win32_LogicalFileSecuritySetting='" & ExplicitPath & "'")
    If objSecurity.GetSecurityDescriptor(objSD) = 0 Then
        Set objOwner = objSD.Owner
        WScript.Echo "NTFS Premissions:" & vbCrLf & "owned by " & objOwner.Name         
        'Loop through each ACE object inside the DACL
        For Each objACE in objSD.DACL
            Permissions = "--Special--"
         If objAce.AccessMask = 2032127 Then Permissions = "Full"
         If objAce.AccessMask = 1245631 Then Permissions = "Change"
         If objAce.AccessMask = 1179817 Then Permissions = "Read"
            'Make the output pretty by standardizing the length by adding spaces. Use
            'IsNull to make sure an Trustee.Name exists for the ACE
         If NOT IsNull(objACE.Trustee.Name) Then
             LengthACEName = Len(objACE.Trustee.Name)
         ACEName = objACE.Trustee.Name & Space(40 -    LengthACEName)
         WScript.Echo " " & ACEName & " " & Permissions
         Else
         WScript.Echo " No name for SID <----"
         End If        
         Next
    End If


Добавлено:
да и вобще - http://support.microsoft.com/default.aspx?scid=kb;en-us;Q279682
Автор: AleXeyS55
Дата сообщения: 30.06.2006 09:29
urel
Спасибо огромное!
Автор: IGOLNI
Дата сообщения: 30.06.2006 09:40
Подскажите, есть сетевая папка с программами, к которым разрешен доступ в зависимости от принадлежности пользователя к группе безопасности. Есть папка с ярлыками на эти программы. Как бы скопировать ярлыки на рабочий стол пользователя только тех программ, к которым у него есть доступ? А по завершении сеанса их удалить? (Этот список со временем меняется).
Автор: AleXeyS55
Дата сообщения: 30.06.2006 10:28
urel
Что то не совсем то, мне надо же посмотреть доступ в сетевую папку, кому и какой разрешон, а не на локальном винте.
Автор: IGOLNI
Дата сообщения: 30.06.2006 11:14
Мне нужно что-нибудь в духе:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var File1 = fso.GetFile("d:\\test1.lnk");
if (fso.FileExists("d:\\test1.exe"))
File1.Copy("c:\\test1.lnk");

только не FileExists, т.к файл существует, а что-нибудь другое. Пользователь этот файл открыть не может, нет доступа.

У файла, который пользователю недоступен отсутствует вкладка - безопасность. Как бы это проверрить в IF?
Или например попытаться скопировать файл во временную папку и в случае отказа не выполнять копирование Линка на файл?
Автор: urel
Дата сообщения: 30.06.2006 12:20
AleXeyS55
может не так понял, но вот еще есть линк - если нужен скриптец =)))
http://support.microsoft.com/default.aspx?scid=kb;en-us;825751
xcacls.vbs
а еще могу порекомендовать такой тул http://www.sysinternals.com/Utilities/AccessEnum.html , если тебе нужно провести разовый аудит премишенов

IGOLNI
а ты просто копируй все что можеш - нет прав на чтение ярлыка - не скопируется


Добавлено:
вкладка безопастность может отсутствовать если раздел не NTFS и/или ты смотриш из XP в которой включен Simple Sharing
Автор: IGOLNI
Дата сообщения: 30.06.2006 12:47

Цитата:
IGOLNI
а ты просто копируй все что можеш - нет прав на чтение ярлыка - не скопируется

Ярлыки доступны все для всех. Мне нужны только те, которые соответствуют доступным программам.
Автор: AleXeyS55
Дата сообщения: 30.06.2006 13:13
urel
Это я наверное плохо объясняю
Начальство поставило задачу: нужно узнать кто и для кого открывает доступ в сети на своих машинах. Вот мне и нужно запустить скрипт на машине пользователя (можно и из сети если получится, наверное даже лучше), выбрать все папки к которым открыт сетевой доступ, посмотреть для кого он открыт и с какими возможностями (чтение, запись или полный) и сохранить эту инфу в файл, например на сервере.
Вот так.

Добавлено:
net share share_name не помогает, не выводит ни имен пользователей у которых есть доступ, ни прав на папку.
Автор: urel
Дата сообщения: 01.07.2006 10:54
IGOLNI
так настрой на ярлыки acl соответствующий программам

Добавлено:
AleXeyS55


Цитата:
Что то не совсем то, мне надо же посмотреть доступ в сетевую папку, кому и какой разрешон, а не на локальном винте.

!=

Цитата:
Вот мне и нужно запустить скрипт на машине пользователя




доработай напильником предложеноый мною скрипт и раздай его через гп
есили ты хочеш сделать это из сети - да вобщем то тоже самое - собери в кучу xcacls, List Network Shares, список машин и будет щастье =)
PS: можно еещ воспользоваться какимнить секурити монитором типа GFI LANguard Network Security Scanner - он такие вещи тоже проверяе, вроде
Автор: IGOLNI
Дата сообщения: 03.07.2006 13:53
И все-таки, а есть ли возможность проверить из скрипта, есть ли у файла вкладка "безопасность" или нет?
Автор: urel
Дата сообщения: 03.07.2006 22:22
IGOLNI
только что про это и говорили - посмотри пару постов выше ссылку на xcacls - ты можеш получить список ACL для файла или папки.
Автор: JloT
Дата сообщения: 04.07.2006 09:53
freeek
Через консоль netsh ?
Автор: Sk1f
Дата сообщения: 04.07.2006 12:25
urel, subinacl я бы тоже посоветовал посмотреть.
Автор: Cursed
Дата сообщения: 05.07.2006 02:38
Можно ли с помощью AutoIt определить состоит пользователь в группе или нет? Например, есть группы Users, Internet. Мне необходимо проверить, состоит ли пользователь User в группе Internet. Если да, то совершить определенные действия.
P.S. Я знаю как это реализовывается на других языках, но нужен именно AutoIt.
Автор: Pser
Дата сообщения: 05.07.2006 19:03
Столкнулся с необходимостью переименование всех машин в домене. Нашел несколько способовю
1. с помощью netdom (минус в том что если на компе откл. служба файл анд шеринг, то нетдом не срабатывает)
2. скрипт
'strComputer = "OldName"
'Set objWMIService = GetObject("winmgmts:" _
' & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

'Set colComputers = objWMIService.ExecQuery _
' ("Select * from Win32_ComputerSystem")

'For Each objComputer In colComputers
' Err = objComputer.Rename("NewName")

все отлично, но этот скрипт надо запускать на самой машне с правами администратора, это не подходит, т.к цель переименование удаленно.

3. Этот скрипт считаю самым переспективным

'strComputer = "OldName"
'strDomain = "domain"
'strUser = "user"
'strPassword = "pass"

'Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
'Set objSWbemServices = objSWbemLocator.ConnectServer'(strComputer,"root\cimv2",strUser,strPassword,"MS_409","ntlmdomain:" & strDomain)
'Set colSwbemObjectSet = _
objSWbemServices.ExecQuery("Select * From Win32_Process")
'For Each objProcess in colSWbemObjectSet
' Err = objProcess.Rename("NewName")
'Next
скрипт должен создавать соединение с удаленной машиной, но у меня выдает инвалид параметр на строке '
'Set objSWbemServices = objSWbemLocator.ConnectServer(strComputer,"root\cimv2",strUser,strPassword,"MS_409","ntlmdomain:" & strDomain)

Если кто сталкивался с такой проблемой, помогите плиз
Автор: FreemanRU
Дата сообщения: 05.07.2006 19:13
Pser

Цитата:
2. скрипт

Кто сказал, что нельзя удаленно?

Цитата:
'Set objWMIService = GetObject("winmgmts:" _
' & "{impersonationLevel=impersonate}!\\" & [b]strComputer[\b] & "\root\cimv2")

Этот параметр как раз и отвечает за то, на каком компе будет происходить дело
Автор: Pser
Дата сообщения: 05.07.2006 19:27
этот скрипт заканчивает работу с ошибкой permission denied: "GetObject"
Почему не хвататет прав, если я запускаю скрипт под админом домена?
Наверное функции GetObject не хватает прав на удаленной машине, но как обойти это?
Автор: urel
Дата сообщения: 05.07.2006 20:04
а попробуй в гп засунуть
Автор: Pser
Дата сообщения: 06.07.2006 09:20
пробывал, засунул в стартап скрипт для компьютера, там права систем, но этого не хватает. Видимо нужны права для переименование компа в домене. Самое интересное, что если запустить скрипт на переименуемой машине с правами, то он отлично отрабатывает. Из этого я сделал вывод, что проблема в удаленном подключении к машине.
Автор: urel
Дата сообщения: 06.07.2006 09:44
Pser
выведи компы в отдельный OU заведи их в группу безопастности - делигируй группе права на этот OU достаточный для переименования. наверно сработает


Добавлено:
хочу сказать - работает =)
Автор: Pser
Дата сообщения: 06.07.2006 10:34
что значит группа безопастности?
это что создать группу и дать ей какие то права? а потом этой группе делегировать права управления OU?

Я правильно понимаю? Если мы даем группе права, то зачем тогда делигировать?
Автор: urel
Дата сообщения: 06.07.2006 11:47
создать security group global/domain local, делигировать = дать права
достоточно дать read/write на нужный OU
Автор: Pser
Дата сообщения: 06.07.2006 11:50
и еще вопрос в эту созданную группу нужно добавить все акаунты машин которые я хочу переименовать?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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