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

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

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

ShriEkeR (23-05-2011 23:06): Автоматизация администрирования. Часть 3  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114

   

FreemanRU



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

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


Часть 2я

Часть 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 подобный скриптовый язык с исходниками
  9. VBS2EXE - утилита для компиляции vbs и js скриптов в exe выдранная из пакета PrimalScript

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

 
Подробнее...
Создается по материалам данного топа

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

 

Всего записей: 3794 | Зарегистр. 16-07-2004 | Отправлено: 17:27 11-12-2006 | Исправлено: Smitis, 12:30 20-08-2008
CrackMe

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Упс... Ошибочка вышла, не туда запостил.

Всего записей: 711 | Зарегистр. 18-07-2006 | Отправлено: 18:58 04-07-2008 | Исправлено: CrackMe, 19:00 04-07-2008
Bugavka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Приветствую. Проблема вот в чем. Есть домен, есть группы. есть скрипт для создания нового пользователя, но он не добавляет пользователя  в группы. Задача: сделать какой-нить gui для выбора групп, в которые добавиться созданный пользователь. Помогите кто чем )

Всего записей: 21 | Зарегистр. 15-05-2008 | Отправлено: 05:10 11-07-2008
yazzi

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

Код:
 Sub Adduser
  ' Объявляем переменные
  Dim strComputer, strUser, Res,Text,Title,objComputer, objUser, s
  Dim ObjGroup, strGroup, myArray, Flag, a
  On Error Resume Next
  ' Извлекаем имена компьютера, пользователя
  strComputer = objDocument.all.selStation.Value
  Title="Добавление пользователя"
  Text = "Введите имя пользователя"
  strUser = InputBox(Text, Title)
  If strUser=vbcancel Then  
  WScript.Echo "Error"
  End If  
  If strUser = "" Then  
    Text = " Вы не ввели имя пользователя"
    WshShell.Popup Text, 0, Title, vbCritical
  Else  
    Text="Вы точно хотите добавить пользователя " & strUser & " на компьтере " & strComputer
    Res=MsgBox(Text,vbOkCancel+vbInformation+vbDefaultButton1,Title)
    If Res=vbOk Then
      'Связываемся с компьютером  
      Set objComputer = GetObject("WinNT://"& StrComputer & "")
      If Err.Number <> 0 Then  
        Text = "Произошла ошибка при подключении к комьютерю " & strComputer & vbCrLf & "Описание: " & Err.Description
        WshShell.Popup Text, 0, Title ,vbCritical
        Err.Clear
      Else
        ' Создаем объект класса User
        Set objUser = objComputer.Create("user",strUser)
        ' Ввод пароля
        s=InputBox("Введите пароль нового пользователя",Title)
        objUser.SetPassword s
        objUser.SetInfo
        'Обработка ошибок
        If Err.Number <> 0 Then
          If Err.Number = "-2147022672" Then
            Text = "Ошибка при добавление пользователя " & strUser & vbCrLf &_
            "Описание: Такой пользователь уже существует"
            WshShell.Popup Text, 0, Title, vbCritical+vbDefaultButton1
          Else  
            Text = "Ошибка при добавление пользователя " & strUser & vbCrLf & "Описание: " & Err.description
            WshShell.Popup Text, 0, Title ,vbCritical
            ' Очищаем свойства объекта Err
            Err.Clear
          End If
        Else
          For Each ObjGroup In objComputer  
            If ObjGroup.class = "Group" Then  
              strGroup = strGroup & ObjGroup.name &";"
            End If  
          Next
          myArray = Split (strGroup, ";",-1,1)
          Flag = False  
          While Flag <> True  
            a = 0
            strGroup = "0: Не добавлять пользователя к группе" & vbCrLf
            While Flag <> True  
              If myArray(a) <> ""  Then  
                strGroup =strGroup & a+1 & ": " & myArray(a) & vbCrLf
                a = a+1
              Else  
                Flag = True
              End If  
            Wend  
            Flag = False  
            Text = "Введите номер группы к которой вы хотите добавить пользователя" &_
            vbCrLf & strGroup
            a = InputBox (Text, Title)
            If a = 0 Then  
              WshShell.Popup "Вы отказались от добавления пользователя в группу",_
              0, Title, vbOKOnly
              Flag = True
            Else  
              a = a - 1
              strGroup = myArray(a)
              Set ObjGroup = objComputer.Create("group", strGroup)
              Err.Clear
              ObjGroup.put strUser, strGroup
              ObjGroup.setInfo
              ObjGroup.add objUser.ADSpath
              Text = "Хотите добавить пользователя еще в одну группу"
              Res=MsgBox(Text,vbYesNo+vbInformation+vbDefaultButton1,Title)
              If Res <> vbNo Then
                Text = "Пользоователь добавлен"
                WshShell.Popup Text, 0, Title, 1
                Flag = True
              End If
            End If  
          Wend  
        End If
      End If
    Else  
      Text = " Вы отказались от добавления нового пользователя"
      WshShell.Popup Text, 0, Title, vbOKOnly
    End If
  End If
End Sub  

Всего записей: 98 | Зарегистр. 14-08-2007 | Отправлено: 10:36 11-07-2008
Bugavka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Yazzi, спасибо, конечно. Но опять же проблем бы не было, если просто прописывать группу в инпутбоксе. Нужно, чтоб скрипт показал список групп на домене и дал выбрать несколько и добавил пользователя в эти группы
 
Добавлено:

Цитата:
For Each ObjGroup In objComputer  
            If ObjGroup.class = "Group" Then  
              strGroup = strGroup & ObjGroup.name &";"  
            End If  
          Next

Вот это не совсем понял, и какой номер тогда нужно ввести
 
Добавлено:
откуда берется strComputer???

Цитата:
strComputer = objDocument.all.selStation.Value

 
потом не создается объект

Цитата:
Set objComputer = GetObject("WinNT://"& StrComputer & "")

 
 
 
Добавлено:
КЛЕВО!!! СПАСИБО!!!

Всего записей: 21 | Зарегистр. 15-05-2008 | Отправлено: 10:48 11-07-2008
Malboro

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, как должен выглядеть скрипт, чтобы при входе пользователя в домен,  
в реестре (если такой ветки-нет) - создавалась ветка HKEY_CURRENT_USER/Software/RIT/The Bat, путем импорта из файла реестра (допустим с именем 1.reg)
А если такая ветка есть, то она бы удалялась и заново бы импортировалась из этого же файла.
(Думаю, это не самый лучший вариант, удалять, а потом импортировать, но мне кажется самый простой для написания скрипта).
Конечно, было бы лучше, чтобы построчно сверялся файл с веткой реестра и импортировались только необходимые (изменненные) значения, но я думаю, это сильно замороченно.
Заранее спасибо за помощь.
 
 
--------------
Вопрос снят. Это оказалось тривиально.

Всего записей: 39 | Зарегистр. 24-11-2006 | Отправлено: 20:51 11-07-2008 | Исправлено: Malboro, 13:23 12-07-2008
abasov



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

Код:
'Скрипт выполняет действие в зависимости от наличия ветки в реестре
On Error Resume Next
'Set WshShell = CreateObject("WScript.Shell")
Set WshShell = WScript.CreateObject("WScript.Shell")  
systemroot = WshShell.ExpandEnvironmentStrings("%Systemroot%")
const HKLM = &H80000002
'подключение к WMI
Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")
If Err.Number <> 0 Then
    WScript.Echo Err.Number & ": " & Err.Description
    WScript.Quit
End If
 
'ReadKey "читабельна ветка?"
ReadKey "SOFTWARE\Microsoft\Office\11.0\Registration\{90110419-6000-11D3-8CFE-0150048383C9}"
'**************************************************************************************************
Function ReadKey(strKey)
    'Чтение параметров раздела
    intRes = objReg.EnumValues(HKLM, strKey, sNames, Types)
    If not intRes <> 0 Then
     
 
             wscript.sleep 2000
'WshShell.run( systemroot & "\regedit /s \\server\fs\standartpo\Office2003\newpath.reg")
 
WSHShell.RegWrite "HKLM\SOFTWARE\Microsoft\Office\11.0\Common\Internet\LocationOfComponents", "\\server\fs\standartpo\Office2003\"
WSHShell.RegWrite "HKLM\SOFTWARE\Microsoft\Office\11.0\Registration\{90110419-6000-11D3-8CFE-0150048383C9}\SmartSourceDir", "\\server\fs\standartpo\Office2003\"
 
 
'        WScript.Echo intRes & ": удалась прочитать раздел ""HKLM\" & strKey & """"
    Else
'    WScript.Echo intRes & ":Не удалась прочитать раздел ""HKLM\" & strKey & """"
    WScript.Quit    
    End If
     
'        Next
     
End Function

Всего записей: 345 | Зарегистр. 12-11-2002 | Отправлено: 07:17 15-07-2008 | Исправлено: abasov, 07:18 15-07-2008
GTHack



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

----------
Мой блог

Всего записей: 554 | Зарегистр. 03-03-2003 | Отправлено: 10:41 16-07-2008
niichavo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите, уважаемые человеки!
 
Админ домена со своего компьютера запускает скрипт для получения через wmi списка установленных программ на удалённом компьютере домена. Ну так вот, на некоторых компьютерах попытка получения списка  приводит к ошибке, а именно запрос
Код:
Select * from Win32_Product
. Если зайти админом локально на эти компы и выполнить скрипт, то список установленных программ выводится. Другие wmi-запросы не приводят к ошибке. Пока такое поведение обнаружено при обращении лишь к Win32_Product. В чём может быть проблема?
 
ЗЫ. У службы wmi те же параметры запуска как и на непроблемных компах. Каспер стоит у всех, настроен у всех одинаково. Винда у всех одинаковая.

Всего записей: 836 | Зарегистр. 14-09-2005 | Отправлено: 12:24 17-07-2008
yazzi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
niichavo
Есть возможность смотреть через реестр. Вот Код. Данный скрипт Смотрит в реестре софт а потом записывает его в текстовый файл. Лучше будет если это скрипт будет выполняться при заходе пользователя на комп, а текстовики где нибудь на серваке хранить.
Скрипт

Всего записей: 98 | Зарегистр. 14-08-2007 | Отправлено: 10:49 18-07-2008 | Исправлено: yazzi, 11:03 18-07-2008
PhoenixUA



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yazzi
Спрячь простыню под тег more.
 
niichavo
yazzi
Советую использовать Spiceworks.
"Все уже украдено до нас" (c)

Всего записей: 2184 | Зарегистр. 17-11-2005 | Отправлено: 10:59 18-07-2008
yazzi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
PhoenixUA
Во, может ты посоветуешь что. Нужно что каждый раз при заходе пользователя собиралась информация о софте, харде и если есть какие то различия от преведущего  отчета надо выдать сообщение админу. По хорошему отчеты надо хранить в базе данных.

Всего записей: 98 | Зарегистр. 14-08-2007 | Отправлено: 11:10 18-07-2008 | Исправлено: yazzi, 11:10 18-07-2008
niichavo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yazzi
Спасибо, я умею через реестр. Задача была другая. Нужно было удалить программу на удалённом компьютере. Я это делал через скрипт

Код:
 
strComputer = "pupkin"
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
 
Set colSoftware = objWMIService.ExecQuery _
    ("Select * from Win32_Product Where Name = 'Windows XP'")
 
For Each objSoftware in colSoftware
    objSoftware.Uninstall()
Next
 

, который не работает на некоторых компах. Более того, не работают разные проги, которые подключаются к wmi. Тут тоже ошибка при выполнении запроса
Код:
Select * from Win32_Product
. Хочется исправить ведь. Найти причину такого поведения.

Всего записей: 836 | Зарегистр. 14-09-2005 | Отправлено: 11:42 18-07-2008 | Исправлено: niichavo, 11:47 18-07-2008
slech



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите пожалуйста как взять при помощи vbs последнюю строку текстового файла и послать её темой в письме.
 
спасибо.

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 20:44 19-07-2008
Vby



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

Код:
 
last_line = getlastline("с:\1.txt")  
 
Set objEmail = CreateObject("CDO.Message")  
 
objEmail.Bodypart.CharSet = "windows-1251"  
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1  
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "Login"  
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "Pass"  
objEmail.From = "admin@domain.com"  
objEmail.To = "user@domain.com"  
objEmail.Subject = last_line  
objEmail.Textbody = text  
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2  
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp_server"  
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25  
objEmail.Configuration.Fields.Update  
objEmail.Send
 
function getlastline (ascfile)  
set fs = createobject("scripting.filesystemobject")  
set file = fs.GetFile(ascfile)  
set stream = file.OpenAsTextStream  
stream.skip file.size  
line = stream.line  
stream.close  
set stream = file.OpenAsTextStream  
for i=1 to line-2  
stream.skipline  
next  
 
getlastline = stream.readline  
if not stream.atendofstream then  
getlastline = stream.readline  
end if  
 
end function  
 
 

Всего записей: 781 | Зарегистр. 16-09-2004 | Отправлено: 19:05 20-07-2008
slech



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

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 20:22 20-07-2008
slech



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

Цитата:

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "BackUpLogs.bat " & objYear & " " & objMonth & " " & objDay
WScript.sleep(600000)

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

Всего записей: 4893 | Зарегистр. 10-11-2004 | Отправлено: 12:41 21-07-2008 | Исправлено: slech, 12:43 21-07-2008
niichavo



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
slech
 
Вроде можно так:

Код:
 
filepath = "BackUpLogs.bat" & objYear & " " & objMonth & " " & objDay
Set ret = objShell.Exec filepath
Do While ret.Status = 0
   WScript.Sleep 100
Loop
 

А можно так:

Код:
 
filepath = "BackUpLogs.bat" & objYear & " " & objMonth & " " & objDay
'где 0 - тип окна (0 - не видно), 1 - дождаться окончания
Set ret = objShell.Run filepath,0,1
 

Всего записей: 836 | Зарегистр. 14-09-2005 | Отправлено: 15:01 21-07-2008 | Исправлено: niichavo, 15:06 21-07-2008
PhoenixUA



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Правильней второе.
http://www.ss64.com/wsh/run.html
WshShell.Run (strCommand, [intWindowStyle], [bWaitOnReturn])

Всего записей: 2184 | Зарегистр. 17-11-2005 | Отправлено: 16:00 21-07-2008
FighterForLife



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите, пожалуйста, команду (например, в батнике), которая без лишних вопросов очищала бы ПОЛНОСТЬЮ (т.е. ВСЁ - вложенные файлы, папки и т.д.) заданную папку на винте.

----------
Даже Gold Member'ы когда-то были Newbie'ками...

Всего записей: 340 | Зарегистр. 29-03-2005 | Отправлено: 12:19 22-07-2008
vladk1973



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
FighterForLife
А чем тебе RMDIR не нравится?  
А на скрипте можно так:

Код:
 
Dim fso, MyF
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyF = fso.GetFolder("c:\MyFolder")
MyF.Delete
 

Всего записей: 674 | Зарегистр. 23-03-2005 | Отправлено: 13:18 22-07-2008 | Исправлено: vladk1973, 13:26 22-07-2008
   

Страницы: 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 102 103 104 105 106 107 108 109 110 111 112 113 114

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования. Часть 2
ShriEkeR (23-05-2011 23:06): Автоматизация администрирования. Часть 3


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru