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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
FreemanRU



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Sk1f
Спрашивай, что не понятно....

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

Всего записей: 3794 | Зарегистр. 16-07-2004 | Отправлено: 14:15 20-07-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
FreemanRU, как скрипте работать со строчками в файле?  
 
А то я пока все через excel делал, там есть простые ф-ции, к-е вызывают нужную строчку и столбец. А вот как использовать строчку из текстового файла, этого понять до конца не могу.  

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 14:24 20-07-2006
FreemanRU



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Sk1f
Read a Text File into an Array
Разбираем данны скрипт...
Данная строка определяет константу. Используется при открытии файла.

Цитата:
Const ForReading = 1

Создается объект для всех операций с файлами

Цитата:
Set objFSO = CreateObject("Scripting.FileSystemObject")

Открываем файл для чтения

Цитата:
Set objTextFile = objFSO.OpenTextFile("c:\scripts\servers and services.txt", ForReading)

Читаем из файла, пока не найдем конец файла

Цитата:
Do Until objTextFile.AtEndOfStream

Читаем строку

Цитата:
    strNextLine = objTextFile.Readline

Разделяем строку на массив

Цитата:
    arrServiceList = Split(strNextLine , ",")

Дальше думаю всё понятно..

Цитата:
 
    Wscript.Echo "Server name: " & arrServiceList(0)
    For i = 1 to Ubound(arrServiceList)
        Wscript.Echo "Service: " & arrServiceList(i)
    Next
Loop
 

 
Собсьвенно вот это шаблон. Между Do Until objTextFile.AtEndOfStream и Loop
надо вызывать strNextLine = objTextFile.Readline, а затем делать со строкой всё что тебе надо.

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

Всего записей: 3794 | Зарегистр. 16-07-2004 | Отправлено: 14:38 20-07-2006 | Исправлено: FreemanRU, 14:39 20-07-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
FreemanRU спасибо. Вот только что вышел на то что это все методы и свойства объекта TextStream. Буду разбираться
 
А если я хочу сравнить две строчки, тогда нужно строчку делать регулярным выражением и уже работать, как с регулярным?  
 
 
Добавлено:
FreemanRU, и еще если не трудно можешь объяснить зачем ты использовал Ubound.  
И работа ф-ции Split? (что значит разделяем строку на массив)
 
 
Добавлено:
И чтобы совсем уже "добить". Могут ли скрипт работать с базами данных?
 
Добавлено:
2kaaaa,  

Цитата:
 
Set RootDSE = GetObject("LDAP://RootDSE")
Set DefaultDomain = GetObject("LDAP://" & RootDSE.Get("DefaultNamingContext"))
WScript.Echo DefaultDomain.distinguishedName
WScript.Echo VbCrLf
On Error Resume Next  
'----------------------------------------------------------------------------------'
'                          Text of Program
'----------------------------------------------------------------------------------'
path_file="c:\************************.xls"
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open (path_file)_
 
intRow = 2 ' начальная строчка в excel где начинается список  
 
Do Until objExcel.Cells(intRow,1).Value = ""
    Set objOU = GetObject("LDAP://" & "ou=" & objExcel.Cells(intRow, 1).Value & "," _  
                   & RootDSE.Get("DefaultNamingContext"))
    Set objUser = objOU.Create _
        ("User", "cn=" & objExcel.Cells(intRow, 3).Value)  
     
    objUser.SetPassword "" & objExcel.Cells(intRow, 4).Value
    objUser.sAMAccountName = objExcel.Cells(intRow, 3).Value
    objUser.GivenName = objExcel.Cells(intRow, 5).Value
    objUser.SN = objExcel.Cells(intRow, 6).Value
    objUser.userPrincipalName = "" & objExcel.Cells(intRow, 3).Value & "@" & "test.com.ru"[/b]  
    objUser.Put "mail", "" & objExcel.Cells(intRow, 7).Value
    objUser.SetInfo
    intRow = intRow + 1
Loop
objExcel.Quit
 
   
             
Посмотри CN при создании пользователя
Посмотри строчку где начинается список пользователей
Измени имя домена в строчке -  objUser.userPrincipalName
             
             
 

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 14:56 20-07-2006 | Исправлено: Sk1f, 18:21 20-07-2006
kaaaa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sk1fспасибо огромное.
Завтра на работе попробую.

Всего записей: 28 | Зарегистр. 20-10-2005 | Отправлено: 20:50 20-07-2006
enver



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

Всего записей: 595 | Зарегистр. 21-11-2004 | Отправлено: 00:02 21-07-2006
Sk1f



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

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 10:10 21-07-2006
kaaaa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sk1f
Спасибо еще раз.
Все работает.  
А что надо дописать в этот скрипт, чтобы он добавлял пользователей и во вложенные OU

Всего записей: 28 | Зарегистр. 20-10-2005 | Отправлено: 10:43 21-07-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kaaaa, принцип такой -  
Set objOU = GetObject("LDAP://" & "ou=test2" & ",ou=test1," & "ou=test" _  
                   & RootDSE.Get("DefaultNamingContext"))
 
В AD - - это так

Цитата:
 
test.com.ru
    ou=test
     ou=test1
      ou=test2
 

 

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 10:58 21-07-2006 | Исправлено: Sk1f, 10:59 21-07-2006
enver



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sk1f, Вас не затруднит ткнуть меня в нужном напрвлении?
 
 
Добавлено:
в частности интересует процедура Logoff

Всего записей: 595 | Зарегистр. 21-11-2004 | Отправлено: 11:03 21-07-2006
FreemanRU



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Sk1f
Купи/скачай книжку по VBScript или VB. Там это всё расписано ооочень подробно.

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

Всего записей: 3794 | Зарегистр. 16-07-2004 | Отправлено: 11:19 21-07-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
FreemanRU ну я пока по интернету информацию ищу. Книга будет только через недели две.  
 
А с базами данных нужно сейчас разобраться.  
 

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 11:26 21-07-2006
FreemanRU



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Sk1f
а здесь не смотрел книжки?
 
ПО БД н-р вот, это вставка новой записи:

Код:
 
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
objConnection.Open "DSN=Inventory;"
objRecordset.CursorLocation = adUseClient
objRecordset.Open "SELECT * FROM Hardware" , objConnection, _
adOpenStatic, adLockOptimistic
Set colSoundCards = GetObject("winmgmts:").ExecQuery _
("Select * from Win32_SoundDevice")
For Each objSoundCard in colSoundCards
objRecordset.AddNew
objRecordset("ComputerName") = objSoundCard.SystemName
objRecordset("Manufacturer") = objSoundCard.Manufacturer
objRecordset("ProductName") = objSoundCard.ProductName
objRecordset.Update
Next
objRecordset.Close
objConnection.Close
 



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

Всего записей: 3794 | Зарегистр. 16-07-2004 | Отправлено: 11:56 21-07-2006
kaaaa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
2Sk1f
Скрипт работает, только почему то он создает пользователей с пустыми паролями

Всего записей: 28 | Зарегистр. 20-10-2005 | Отправлено: 13:48 21-07-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kaaaa хммм а тебе именно нужны те пароли, что ты устанавливаешь?  
Просто может проще тогда задать свойства - сменить пароль при следующей записи  
и нга Домене настроить миним. длину пароля и срок действия  

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 13:54 21-07-2006
kaaaa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sk1f, к сожалению, нужны именно эти пароли

Всего записей: 28 | Зарегистр. 20-10-2005 | Отправлено: 14:00 21-07-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
посмотри http://www.microsoft.com/technet/scriptcenter/scripts/default.mspx?mfr=true

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 14:23 21-07-2006
kaaaa

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sk1f
вот нарыл такой скрипт:
Option Explicit
Dim objRootLDAP, objContainer, objUser, objShell
Dim objExcel, objSpread, intRow
Dim strUser, strOU, strSheet
Dim strCN, strSam, strFirst, strLast, strPWD, strdisplay, strdesc, strprinc, strinit
' -------------------------------------------------------------'
' Important change OU= and strSheet to reflect your domain
' -------------------------------------------------------------'
strOU = "OU=Accounts ," ' Note the comma
strSheet = "d:\scripts\UserSpread1.xls"
' Bind to Active Directory, Users container.
Set objRootLDAP = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://" & strOU & _
objRootLDAP.Get("defaultNamingContext"))
' Open the Excel spreadsheet
Set objExcel = CreateObject("Excel.Application")
Set objSpread = objExcel.Workbooks.Open(strSheet)
intRow = 3 'Row 1 often contains headings
' Here is the 'DO...Loop' that cycles through the cells
' Note intRow, x must correspond to the column in strSheet
Do Until objExcel.Cells(intRow,1).Value = ""
  strSam = Trim(objExcel.Cells(intRow, 1).Value)
  strCN = Trim(objExcel.Cells(intRow, 2).Value)
  strFirst = Trim(objExcel.Cells(intRow, 4).Value)
  strLast = Trim(objExcel.Cells(intRow, 3).Value)
  strPWD = Trim(objExcel.Cells(intRow, 5).Value)
  strdisplay = Trim(objExcel.Cells(intRow, 6).Value)
  strdesc = Trim(objExcel.Cells(intRow, 7).Value)
  strprinc = Trim(objExcel.Cells(intRow, 8).Value)
  strinit = Trim(objExcel.Cells(intRow, 9).Value)
  ' Build the actual User from data in strSheet.
  Set objUser = objContainer.Create("User", "cn=" & strCN)
  objUser.sAMAccountName = strSam
  objUser.givenName = strFirst
  objUser.sn = strLast
  objUser.displayName = strdisplay
  objUser.description = strdesc
  objUser.userPrincipalName = strprinc
  objUser.initials = strinit
  objUser.SetInfo
' Separate section to enable account with its password
  objUser.userAccountControl = 512
  objUser.pwdLastSet = 0
  objUser.SetPassword strPWD
  objUser.SetInfo
intRow = intRow + 1
Loop
objExcel.Quit
WScript.Quit
 
щас попробую

Всего записей: 28 | Зарегистр. 20-10-2005 | Отправлено: 14:25 21-07-2006
Sk1f



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

Цитата:
 
'Restarts a computer.
 
strComputer = "atl-dc-01"
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate,(Shutdown)}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
    ("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
    ObjOperatingSystem.Reboot()
Next
 


Цитата:
 
'Shuts down the local computer.
 
Set colOperatingSystems = GetObject("winmgmts:{(Shutdown)}").ExecQuery("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
    ObjOperatingSystem.Win32Shutdown(1)
Next
 


Цитата:
 
ShutDown "st0", "PowerOff"
на
ShutDown "твой_комп", "Чего_ты_там_хочешь"
 
варианты "Чего_ты_там_хочешь":
"logoff"
"logoff_force"
"shutdown"
"shutdown_force"
"reboot"
"reboot_force"
"poweroff"
"poweroff_force"
Надеюсь переводить не надо...
------------------
' use "." for local computer
' Use "PowerOff_Force" for a forced poweroff
 
On error resume next
strComputer = "st0"
ShutDown strComputer, "PowerOff"
 
Sub ShutDown(sNode, sAction)
 
Const EWX_LOGOFF = 0
Const EWX_SHUTDOWN = 1
Const EWX_REBOOT = 2
Const EWX_FORCE = 4
Const EWX_POWEROFF = 8
 
on Error Resume Next
 
Set oWMI = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Shutdown)}!\\" _
& sNode & "\root\cimv2")
 
Set colOperatingSystems = oWMI.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each obj in colOperatingSystems
Set oOS = obj : Exit For
Next
 
sAction = LCase(sAction)
 
Select Case sAction
Case "logoff"
iCmd = EWX_LOGOFF
Case "logoff_force"
iCmd = EWX_LOGOFF + EWX_FORCE
Case "shutdown"
iCmd = EWX_SHUTDOWN
Case "shutdown_force"
iCmd = EWX_SHUTDOWN + EWX_FORCE
Case "reboot"
iCmd = EWX_REBOOT
Case "reboot_force"
iCmd = EWX_REBOOT + EWX_FORCE
Case "poweroff"
iCmd = EWX_POWEROFF
Case "poweroff_force"
iCmd = EWX_POWEROFF + EWX_FORCE
Case Else
' Default value
iCmd = EWX_POWEROFF
End Select
 
oOS.Win32shutdown iCmd
EndSh:
End Sub
----------------
 


Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 14:58 24-07-2006 | Исправлено: Sk1f, 15:05 24-07-2006
Jovanotti



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ALL
Уважаемые !
Давайте   облегчим себе и другим коллегам жизнь   ....
Помещайте    полезные     на ваш взгляд   скрипты в шапочку.
Под ссылку HOW-TO она ведь для этого и предназначена.

Всего записей: 718 | Зарегистр. 22-12-2002 | Отправлено: 16:47 24-07-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