Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

emx (13-12-2006 21:07): http://forum.ru-board.com/topic.cgi?forum=8&topic=19088#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

ooptimum



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
 

                               Коллеги-администраторы  ....  


Часть 1


Думаю каждый из вас сталкивался с необходимостью выполнять некие несложные рутинные операции, на котороые уходит много драгоценного времени.
 Например, создать определенную структуру каталогов для каждого пользователя домена, изменить некие параметры в профилях всех или части пользователей, изменить полномочия/владельца однотипных файлов в разных каталогах т.д.  
Я, как сисадмин, тоже не раз был вынужден делать все это.  Руками делать это тоскливо и муторно, как вы понимаете. Должен заметить, что по неким "религиозным" убеждениям я всегда старался избегать любых отношений с бейсиком и его производными. Еще мой отец учил меня не иметь с ним никаких дел. Буквально. А теперь я учу своего сына тому же. Но, тем не менее, полностью избежать этого, по всей видимости, невозможно, тем более, что бейсик от M$ сейчас уже далеко не та "лапша", которой он был изначально, а современный структурированный язык, нашедший множество применений. Похоже, что для меня в очередной раз настала пора выучить еще что-то. Знаете, как курильщик много раз безуспешно пытается бросить курить, так и я не раз пытался подступиться к изучению VBScript, но пока никак не одолел. Лень, знаете ли. А инструмент в делах административных был бы весьма пользительный, должен заметить, для быстрого написания всякого рода скриптов.

 
    Внимание   !  !  !  

  • Поскольку данный топ весьма не мал, не забывайте  использовать "версию для печати" для более удобного поиска по теме. А также МЕГА ПОИСКОВИК от NEPa

  • Дабы не раздувать топ,  примеры своих  скриптов  заключаем в тег  "more"

Консольные команды. Командный интерпретатор

Windows Script Host (WSH) &  VBScript  &  JScript


Вышеперечисленные буки можно  взять здесь

    ТOOLS :
  1. Autoit+readme.rus
  2. Scriptologic
  3. AutoMate
  4. KIXTART
  5. nnCron-Планировщик с поддержкой скриптового языка --  РЕКОМЕНДУЮ
  6. WGET, GREP, GETMAIL, BLAT for Windows замечательные консольные утилиты
  7. 4dos/4nt -- отличная замена стандартного коммандного интерпретатора  
  8. JudoScript - java подобный скриптовый язык с исходниками

    Дружественные темы :
  1. Автоматическая (unattended) установка Windows
  2. Интересные команды при работе с Linux
  3. Отличный сайт по скриптингу, и не только
  4. Использование KIX
  5. Использование WMI

 
>>HOW -  TO:
Создается по материалам данного топа

 
Надеюсь данная тема будет полезна для Вас.
 Предложения по реформированию шапки принимаю в ПМ Jovanotti

 

Всего записей: 2898 | Зарегистр. 30-05-2002 | Отправлено: 08:55 13-12-2002 | Исправлено: FreemanRU, 17:29 11-12-2006
pazdak

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Gabzya
команда net use * /d /y поможет
 
или на VBS
 
'----v---- Делаем net use * /d /y
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set colDrives = WshNetwork.EnumNetworkDrives
For i = 0 to colDrives.Count-1 Step 2
'  WScript.Echo colDrives.Item(i)
  WshNetwork.RemoveNetworkDrive colDrives.Item(i), true, true
Next
 
'----v---- Подключаем сетевые диски
WshNetwork.MapNetworkDrive "F:", "\\сервер\шара"

Всего записей: 376 | Зарегистр. 13-02-2003 | Отправлено: 16:21 22-06-2006
Etalon

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Gabzya

Код:
 
Option Explicit
Dim WshNetwork, Drives, i
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set Drives = WshNetwork.EnumNetworkDrives
 
For i = 0 to Drives.Count - 1 Step 2
   Select Case Drives.Item(i)
      Case "M:" WshNetwork.RemoveNetworkDrive "M:", true
      Case "N:" WshNetwork.RemoveNetworkDrive "N:", true
      Case "Y:" WshNetwork.RemoveNetworkDrive "Y:", true
   End Select
Next
 

Всего записей: 306 | Зарегистр. 03-02-2006 | Отправлено: 16:24 22-06-2006 | Исправлено: Etalon, 16:28 22-06-2006
Gabzya



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Etalon
pazdak
cпс на
Цитата:
или на VBS

не силен

Цитата:
net use * /d /y поможет

можно по подробнее, значит я в батник вместо net use x: \\comp\shara
пишу net use x: \\comp\shara /d /y  
??

----------
Сводить лошадь к воде не сложно. Но если вам удастся заставить ее плавать на спене-вот это значит, что вы чего-то добились!

Всего записей: 1149 | Зарегистр. 14-12-2004 | Отправлено: 17:49 22-06-2006
pazdak

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Gabzya

Цитата:
можно по подробнее, значит я в батник вместо net use x: \\comp\shara  
пишу net use x: \\comp\shara /d /y  

НЕТ.
Нужно указывать только диск, например X: или символ * если нужно удалить все сетевые диски.
 
net use * /d /y
или  
net use X: /d /y

Всего записей: 376 | Зарегистр. 13-02-2003 | Отправлено: 09:16 23-06-2006
Gabzya



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
pazdak
куллл
а чтобы старые отключить и сразу новы подключить? вот так?
net use * /d /y  
net use X: \\comp\shara1
net use У: \\comp\shara2
 
Добавлено:
да да да  
ответил сам, спс за помощь очч помогли

----------
Сводить лошадь к воде не сложно. Но если вам удастся заставить ее плавать на спене-вот это значит, что вы чего-то добились!

Всего записей: 1149 | Зарегистр. 14-12-2004 | Отправлено: 10:38 23-06-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Такая задача, есть данные в txt файле.  

Цитата:
 
a,b,c,d
a1,b1,c1,d1,
........
an,bn,cn,dn
 

 
Нужно извлечь эти данные и вывести их в виде a, a1,a2,a3....
 
И тд.
 
Делать предполагаю с помощью регулярных выражений, но только конкретно как выделить значения до 1-й запятой, а как допустим между 1-й и 2-й запятыми не понимаю.  
 
 
 
 

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 13:27 26-06-2006 | Исправлено: Sk1f, 13:45 26-06-2006
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Skif
а может сплит?
 

Цитата:
Split(expression[, delimiter[, count[, compare]]])
expression  
Required. String expression containing substrings and delimiters. If expression is a zero-length string, Split returns an empty array, that is, an array with no elements and no data.
 
delimiter  
Optional. String character used to identify substring limits. If omitted, the space character (" ") is assumed to be the delimiter. If delimiter is a zero-length string, a single-element array containing the entire expression string is returned.
 
count  
Optional. Number of substrings to be returned; -1 indicates that all substrings are returned.
 
compare  
Optional. Numeric value indicating the kind of comparison to use when evaluating substrings. See Settings section for values.

 
 

Цитата:
Dim MyString, MyArray, Msg
MyString = "VBScriptXisXfun!"
MyArray = Split(MyString, "x", -1, 1)
' MyArray(0) contains "VBScript".
' MyArray(1) contains "is".
' MyArray(2) contains "fun!".
Msg = MyArray(0) & " " & MyArray(1)
Msg = Msg   & " " & MyArray(2)
MsgBox Msg


Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 14:23 26-06-2006 | Исправлено: urel, 14:25 26-06-2006
Klesk



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите пожалуйста написать скрипт, который в идеале должен запускаться при старте системы (или входе пользователя в систему - по вашему выбору), работать постоянно до выключения компьютера и сохранять в mssql таблицу следующие данные:
 
- имя компьютера,
- имя пользователя (от чьего имени запущен),
- имя процесса,
- дату запуска/завершения,
- время запуска/завершения,
- тип события (запуск или завершение).
 
Очень надо конечно же.
 
Необходимо получить данные об загруженности компьютеров и использовании конкретных программ на компьютерах предприятия.

Всего записей: 208 | Зарегистр. 19-10-2003 | Отправлено: 09:59 27-06-2006
FreemanRU



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Klesk

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

Для этого есть perfmon.
Но если надо прям скриптом...
Monitor Process Creation

Код:
 
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colMonitoredProcesses = objWMIService. _  
ExecNotificationQuery("select * from __instancecreationevent " _  
& " within 1 where TargetInstance isa 'Win32_Process'")
i = 0
Do While i = 0
Set objLatestProcess = colMonitoredProcesses.NextEvent
Wscript.Echo objLatestProcess.TargetInstance.Name
Loop
 

 
Monitor Process Deletion

Код:
 
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colMonitoredProcesses = objWMIService. _
ExecNotificationQuery("select * from __instancedeletionevent " _  
& "within 1 where TargetInstance isa 'Win32_Process'")
i = 0
Do While i = 0
Set objLatestProcess = colMonitoredProcesses.NextEvent
Wscript.Echo objLatestProcess.TargetInstance.Name
Loop
 

 
Monitor Processor Use by Process

Код:
 
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_process")
For Each objProcess in colProcesses
sngProcessTime = ( CSng(objProcess.KernelModeTime) + _
CSng(objProcess.UserModeTime)) / 10000000
Wscript.echo objProcess.name & VbTab & sngProcessTime
Next
 


----------
Если не получается с первого раза - прочти инструкцию. (с)
"Откуда нам знать, что такое война, если мы не знаем мира..."(с)
Записки

Всего записей: 3795 | Зарегистр. 16-07-2004 | Отправлено: 10:33 27-06-2006
Klesk



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FreemanRU
Если бы с perfmon-ом было все так понятно, я б не обращался, не подходит он для выполнения данной задачи - лучше уж контролировать им загруженность сервера - самое то. Да и приведенное тобой sngProcessTime - тоже время условное и в данной ситуации не подходит, мне достаточно времени создания процесса и его уничтожения, чтобы потом получить время использования программы.
 
Спасибо.

Всего записей: 208 | Зарегистр. 19-10-2003 | Отправлено: 17:07 27-06-2006
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Klesk
а времы работы программы разве описывает загрузку системы???  
наверно проще взять Processor - %User time  /  Terminal Services - Active Sessions  
 
Добавлено:
во что тебе нужно  =)  
 
http://forum.ru-board.com/topic.cgi?forum=35&topic=0193&start=280

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 17:39 27-06-2006
Klesk



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
urel
Я писал:

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

именно так (по-черному: "кто как юзает софт").
 
Да я отуда сюда пришел, мрачная прога - ничего хорошего для моей задачи нет. Может кому-то и поможет.
 
Попробую сам написать (полный ноль в скриптах), если что - сюда буду тыкаться с вопросами.

Всего записей: 208 | Зарегистр. 19-10-2003 | Отправлено: 10:59 28-06-2006
FreemanRU



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Klesk

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

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

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

А что писать-то? Я же тебе всё дал. Создание и удаление. Пиши эти события в базу или файл, и всё.

----------
Если не получается с первого раза - прочти инструкцию. (с)
"Откуда нам знать, что такое война, если мы не знаем мира..."(с)
Записки

Всего записей: 3795 | Зарегистр. 16-07-2004 | Отправлено: 11:10 28-06-2006
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а кто помешает пользователю просто завершить твой скрипт?
 
а есл взять пример из букваря

Цитата:
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  имя процесса

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 11:20 28-06-2006
AleXeyS55



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте. Подскажите пожалуйста как написать скрипт который бы при запуске на машине записывал в текстовый файл расшаренные папки и какие комы права на них даны?
Просто вывести список папок не сложно, а вот кому дан доступ и какой...

Всего записей: 227 | Зарегистр. 30-01-2006 | Отправлено: 11:30 28-06-2006
FreemanRU



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
urel

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

обычный пользвоатель не сможет завершить процессы другого пользвоателя.

----------
Если не получается с первого раза - прочти инструкцию. (с)
"Откуда нам знать, что такое война, если мы не знаем мира..."(с)
Записки

Всего записей: 3795 | Зарегистр. 16-07-2004 | Отправлено: 11:36 28-06-2006
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FreemanRU
я про то и говорил что скрипт лучше запускать из политик комптютера
 
Добавлено:
AleXeyS55
 
глянь тут

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 12:12 28-06-2006 | Исправлено: urel, 12:30 28-06-2006
AleXeyS55



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что то скрипт не очень работает, во первых ве выдает что я неправильно ввел адрес и предлагает посмотреть помощь, во вторых когда запуска с параметром -f то он пишет что не может создать файл для отчета. Хотя на самом деле файл создается но в нем пусто
 
Добавлено:
Вопрос со скриптом все еще открыт

Всего записей: 227 | Зарегистр. 30-01-2006 | Отправлено: 08:31 29-06-2006
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 14:15 29-06-2006
AleXeyS55



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
urel
Спасибо огромное!

Всего записей: 227 | Зарегистр. 30-01-2006 | Отправлено: 10:29 30-06-2006
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования
emx (13-12-2006 21:07): http://forum.ru-board.com/topic.cgi?forum=8&topic=19088#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru