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

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

 

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



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

Цитата:
Желательно в батнике, т.к. в них хоть что-то понимаю, посоветуйте, пожалуйста.

 
--start--test.bat---
regedit /s myfile.reg  
--end--test.bat
 
 
 Редактор реестра можно запускать с некоторыми ключами
1. /s (импортирует значения из reg-файла без вывода диалогового окна)
2. /e (экспортирует параметры в reg-файл.
Пример: regedit /e myfile.reg HKEY_USERS\.DEFAULT
 
   

Всего записей: 305 | Зарегистр. 22-09-2003 | Отправлено: 08:01 13-04-2007
gap5



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Нет ни у кого готового скрипта для сбора данных о залогиненных юзерах на компах?
Надо:
а) выцепить из AD имена всех компов,
б) проверить их доступность,
в) на доступных пробить залогиненного юзера,
г) записать ИМЯ_КОМПА, ИМЯ_ЮЗЕРА в файлик...
 
Основной напряг с пунктом Б можно конечно вызывать пинг, сохранять рез-ты в файл, читать файл - но может есть че-то побыстрее?

Всего записей: 1033 | Зарегистр. 30-05-2006 | Отправлено: 17:20 15-04-2007
jONES1979



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

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

ну вот если цель именно ТАКАЯ, то не проще ли поступить так:
- выбрать из AD всех пользователей у которых свойство LastLogon входит в интересующий нас диапазон (в течении часа, в течении дня, посде 7 утра сегодня и тд.),
- потом уже проверять по этому короткому списку с какой  он  машины логинился, доступен ли и прочее по твоему заданию
 
...  
 
вообще, на http://www.microsoft.com/technet/scriptcenter/ была интересная идея, менять юзерам  в AD свойство Description в логон-скрипте, и соответственно  менять в логаут-скрипте, чтобы  потом анализируя Description всегда иметь свежий юзер-лист

Всего записей: 324 | Зарегистр. 20-05-2005 | Отправлено: 20:12 15-04-2007
Smitis



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

Цитата:
Редактор реестра можно запускать с некоторыми ключами

Не забывайте ключ /ea - экспорт в ANSI формате (совместимый с win 9x и NT).

----------
Разум когда-нибудь победит

Всего записей: 3214 | Зарегистр. 09-02-2003 | Отправлено: 21:01 15-04-2007
coolpunk



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

Цитата:
запросто:  
это в cmd и в скрипт на логон каждого юзера:

Парни, вы, видимо, не так поняли. Одним кликом ВСЕМ юзерам! Т.е. не будет времени логиниться под каждым, а надо под админом запустить и всё.
 
Добавлено:
или я не так понял, где-то можно задать логон для всех?

Всего записей: 543 | Зарегистр. 16-04-2004 | Отправлено: 06:14 16-04-2007
Oldster



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

Цитата:
где-то можно задать логон для всех?

если у тебя стоит AD, то в Груповых политиках :
Конфиг. пользователя->Конфиг. Windows->Сценарии (Вход\Выход)->Вход в систему->Добавить

Цитата:
Одним кликом ВСЕМ юзерам! Т.е. не будет времени логиниться под каждым, а надо под админом запустить и всё.

так не получится, т.к. пути к 1С в реестр прописывается под конкретным юзером:
[HKEY_CURRENT_USER]\Software\1C\1Cv7\7.7\Titles]
gap5
см. выше, тоже самое, на логон ставишь вот это:
echo %date% %time% - logon %username% at %computername%>>\\server_name\share\logons.log
имеешь лог кто вошел, с какого компа и во сколько, на выход - тоже самое.

----------
Ой не TCP моё IP (C) Диман

Всего записей: 1367 | Зарегистр. 08-01-2003 | Отправлено: 08:08 16-04-2007
coolpunk



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Oldster
К сожалению АД не стоит, в том-то и проблема что пути у каждого юзера
логи мне не нужны, мне нужно моментально удалить пути...

Всего записей: 543 | Зарегистр. 16-04-2004 | Отправлено: 09:45 16-04-2007
Infected Switch



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Из той же оперы вопрос:
При входе юзера в домен локально срабатывает logon.bat, в котором прописан 1c.reg (добавляет в реестр пути к базам 1c). Как сделать, чтобы он не срабатывал при входе юзера на терминальный сервер (т.к. там уже другие пути нужны)?
 
Добавлено:
coolpunk
Добавить пути при отсутствии АД можно одним верным способом:
Пишем батник, кладем его в общедоступное место, юзер его запускает и имеет пути.
Периодически корректируем пути в этом батнике - они будут меняться.
Можно в автозапуск батников напихать, но тогда теряется возможность их нормального редактирования.
Как именно удалить пути - лично я пока не догнал.

Всего записей: 471 | Зарегистр. 25-08-2006 | Отправлено: 10:53 16-04-2007 | Исправлено: Infected Switch, 11:01 16-04-2007
skw

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

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

 
'---------------------------------------------------------------
' Вывод списка пользователей отлогиненых на компьютерах
'---------------------------------------------------------------  
Const ADS_SCOPE_SUBTREE = 2
 
on error resume next
 
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand =   CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
 
' В следующей строке необходимо заменить имя домена
objCommand.CommandText = "Select Name, Location from 'LDAP://DC=domain,DC=name' " & "where objectClass='computer'"  
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 30  
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE  
objCommand.Properties("Cache Results") = False  
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
    Wscript.Echo "Computer Name: " & objRecordSet.Fields("Name").Value
 
strComputer = "."
Set objWMIService = GetObject(_  
    "winmgmts:\\" & strComputer & "\root\cimv2")
Set colPings = objWMIService.ExecQuery _
    ("Select * From Win32_PingStatus where Address = '"& objRecordSet.Fields("Name").Value &"'")
 
For Each objStatus in colPings
    If IsNull(objStatus.StatusCode) _
        or objStatus.StatusCode<>0 Then  
        WScript.Echo "Computer did not respond."  
    Else
        Wscript.Echo "Computer responded."
 
'Получение имени отлогиненного пользователя
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _  
    &objRecordSet.Fields("Name").Value & "\root\cimv2")  
Set colComputer = objWMIService.ExecQuery _
    ("Select * from Win32_ComputerSystem")
 
For Each objComputer in colComputer
    Wscript.Echo "User Name = " & objComputer.UserName _
        & VBNewLine & "Computer Name = " & objComputer.Name
'Nextscript.Echo objComputer.UserName
Next
 
    End If
Next
 
    Wscript.Echo "Location: " & objRecordSet.Fields("Location").Value
    objRecordSet.MoveNext
Loop
 

Всего записей: 15 | Зарегистр. 07-03-2006 | Отправлено: 11:50 16-04-2007
gap5



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Oldster
Если батник под юзером запускать, то получается он увидит при входе черное окошко... так ведь?
 
Добавлено:
skw
Как я понимаю надо как-то привязать  
 
For Each objComputer in colComputer
    Wscript.Echo "User Name = " & objComputer.UserName _
        & VBNewLine & "Computer Name = " & objComputer.Name
 
к colPings иначе он просто на каждый комп будет выплевывать мессаг "доступен - недоступен" но юзера будет пробивать вне зависимости от доступности?

Всего записей: 1033 | Зарегистр. 30-05-2006 | Отправлено: 12:03 16-04-2007
skw

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

Цитата:
Как я понимаю надо как-то привязать  

Там все привязано.

Цитата:
If IsNull(objStatus.StatusCode) _  
        or objStatus.StatusCode<>0 Then  

 
В скрипте не в том месте стоит вывод Location, его нужно поместить после вывода имени компьютера. А так все работает.

Всего записей: 15 | Зарегистр. 07-03-2006 | Отправлено: 12:34 16-04-2007
Oldster



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

Цитата:
мне нужно моментально удалить пути...

ты уж определись, удалить или записать...
тогда каждому юзверю на раб. стол 2 файла - с удалением и с прописыванием путей... и пусть сами жмут когда им надо.

Цитата:
Как именно удалить пути - лично я пока не догнал.


Цитата:
 
[HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles]  
"D:\\Bases\\MainDB\\"=-
 

gap5

Цитата:
Если батник под юзером запускать, то получается он увидит при входе черное окошко... так ведь?

ну не совсем так
если в политиках отключить это - то не будет ничего "моргать"
 
Добавлено:
еще про моргание черного окна: курим гугл на предмет cmdow.exe (не сильно спасает, но при больших cmd - помогает)

----------
Ой не TCP моё IP (C) Диман

Всего записей: 1367 | Зарегистр. 08-01-2003 | Отправлено: 14:31 16-04-2007
gap5



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Oldster
Тогда уж проще через vbs запускать

Всего записей: 1033 | Зарегистр. 30-05-2006 | Отправлено: 14:38 16-04-2007
Oldster



Старик
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
gap5
хозяин - барин, я предложил свой способ (короткий и простой).

----------
Ой не TCP моё IP (C) Диман

Всего записей: 1367 | Зарегистр. 08-01-2003 | Отправлено: 15:16 16-04-2007
Infected Switch



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

Цитата:
[HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles]  
"D:\\Bases\\MainDB\\"=-  

Чета не пашет =\

Всего записей: 471 | Зарегистр. 25-08-2006 | Отправлено: 15:35 16-04-2007
Oldster



Старик
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Infected Switch
сделай импорт из своего реестра, должно быть нечто:

Цитата:
 
Windows Registry Editor Version 5.00
 
[HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles]
"D:\\Bases\\MainDB\\"="Главная база"
 

 
а потом измени его на  

Цитата:
 
Windows Registry Editor Version 5.00
 
[HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles]
"D:\\Bases\\MainDB\\"=-
 

и запусти. Проверяй правильность работы в самом реестре, естественно твои пути будут отличатся от моих.

----------
Ой не TCP моё IP (C) Диман

Всего записей: 1367 | Зарегистр. 08-01-2003 | Отправлено: 16:09 16-04-2007
gap5



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Накидал скриптег который при логофе\логоне юзера создает на серваке папку (текущий месяц-год) в которой создает файлик и потом дописывает в его конец дату и время логона\логофа юзера на определенный комп. Запускается с параметрами off или on соответственно.  
Вроде работает, подкорректируйте если где криво
 
on error resume next
wYYYY = DatePart("YYYY" , Now)
wMM = DatePart("M" , Now)
If Len(wMM) = 1 Then
   wMM = "0" & wMM
End If
Set WshShell = CreateObject("WScript.Shell")
CompName = WshShell.ExpandEnvironmentStrings("%computername%")
UserName = WshShell.ExpandEnvironmentStrings("%username%")
Curdate = (FormatDateTime(date(),vbgeneraldate))
Curtime = (FormatDateTime(now(),vblongtime))
Dim objFSO, objFolder, objShell, objTextFile, objFile
Dim strDirectory, strFile, strText
strDirectory = "\\server\logfilez$\"
strMonthDirectory = ("AuthLog-"& wMM &"-"& wYYYY)
strFile = ("\auth-" & curdate & ".log")
strTextOFF = ("LOGOFF  |  " & Curdate & " at " & Curtime & "  |  " & Compname & "  >  "& username)
strTextON  = ("LOGON   |  " & Curdate & " at " & Curtime & "  |  " & Compname & "  <  "& username)
WTODO = Wscript.Arguments.Item(0) 'cmd argument
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
 
If objFSO.FolderExists(strDirectory) Then
If not objFSO.FolderExists(strDirectory & strMonthDirectory) Then
   Set objFolder = objFSO.CreateFolder(strDirectory & strMonthDirectory)
End if
 
If not objFSO.FileExists(strDirectory & strMonthDirectory & strFile) Then
   Set objFile = objFSO.CreateTextFile(strDirectory & strMonthDirectory & strFile)
End If  
 
set objFile = nothing
set objFolder = nothing
Const ForAppending = 8
 
Set objTextFile = objFSO.OpenTextFile _
(strDirectory & strMonthDirectory & strFile, ForAppending, True)
 
IF WTODO = "off" then
objTextFile.WriteLine(strTextOFF)
Else
objTextFile.WriteLine(strTextON)
End if
 
objTextFile.Close
 
End If
 
WScript.Quit
 
End If
 
WScript.Quit
 
P.S. Все бы хорошо, но придется юзерам давать доступ на запись в папку с логами, какой ни будь хитропопый юзер может узнать путь и покрошить файлики с логами. Если есть идеи как этого избежать буду признателен.

Всего записей: 1033 | Зарегистр. 30-05-2006 | Отправлено: 17:42 16-04-2007 | Исправлено: gap5, 00:15 17-04-2007
Infected Switch



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Oldster
Так работает. А через logon не захотел... ща буду разбираться...
Спасибо!

Всего записей: 471 | Зарегистр. 25-08-2006 | Отправлено: 17:43 16-04-2007
SIAL

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Гуру, не подскажете как осуществить поиск файла по маске на сетевой линуксовой машинке с самбой?
Такой вариант с wmi там не катит:
strDate = Date - 1
aDate = split(strDate, ".")
dtmTargetDate = aDate(2) & aDate(1) & aDate(0) & "000000.000000-000"
strComputer = "srv1"
Set colFiles = GetObject ("winmgmts:\\" & strComputer).ExecQuery _
    ("SELECT FileName,FileSize FROM CIM_DataFile WHERE " & _
      "Extension = 'gz' " & _
      "AND Path LIKE '\\Archives\\%' " & _
    "AND CreationDate >= '" & dtmTargetDate & "'")
For Each objFile in colFiles
    Wscript.Echo objFile.FileName & "  " & objFile.FileSize
Next
 
можно конечно ипользовать библиотечку WshExtra
Set WshExtra = CreateObject("WshExtra.FileQuery")
if not IsObject(WshExtra) then
    msgBox "Невозможно создание объекта WshExtra." & vbCRLF & _
        "Необходимо установить и зарегистрировать библиотеку WshExtra.dll"  & vbCRLF & _
        vbOKOnly + vbExclamation, "Вызов API"
End If
 
WshExtra.FileSpec = "\\srv1\Archives\*.gz"
For Each File In WshExtra
  If objFSO.FileExists(File) = true Then
    set objTestFile = objFSO.GetFile(File)
    Wscript.Echo  File & Round(objTestFile.Size / 1048576,2) & " Mb"
  End If
Next
 
Но задача стоит по возможности избежать дополнительных библиотек

Всего записей: 45 | Зарегистр. 09-09-2004 | Отправлено: 18:11 16-04-2007
north_crow

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ребята!
подскажите как пробежаться по OU Computers
и на тех компах которые в сети запустить скриптик который лежит на SYSVOL??? (короче форсировать выполнение скрипта)
 
вот нацарапал такой скрипт

Код:
 
Set objAD=getobject("LDAP://OU=TEST-COMP,DC=***,DC=***,DC=***") '
objAD.filter=array("computer")  
On error resume next  
For each obj in objAD  
compad=right(obj.name, len(obj.name)-3) 'сдвигаем вправо на 3 символа (отрезаем CN=)
 
strComputer = compad
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")  
Error = objWMIService.Create("\\10.28.0.2\sysvol\***\scripts\everest\everest.exe /R \\10.28.0.9\share\crow\log\$DATE\$HOSTNAME /SUM /HTML /SILENT /NOICONS /SAFEST", Null, Null, intProcessID)  
Next
 

если его запустить с моего компа - то он только на моем компе и запустит программу, а на остальных нет
и возвращается в Error код 2

Всего записей: 172 | Зарегистр. 04-12-2002 | Отправлено: 09:16 17-04-2007 | Исправлено: north_crow, 16:44 17-04-2007
   

Страницы: 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