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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 | Цитировать | Сообщить модератору
freeek
НЕЛЬЗЯ в AD восстанавлвать пароли. Н-Е-Л-Ь-З-Я. Пароль везде хранится в зашифрованном виде, без возможноти дешифровки, и реально передается только один раз - при его установке и опять же шифруется при пересылке. Далее вместо пароля используется его хэш. Т.е. клиент вводит пароль, но сам пароль никуда ен уходит, а уходит его хэш. Сервер (пусть это сразу будет DC) получает этот хэш, берет хэш пароля из своей базы, сравнивает с тем, что и пришел, и если они совпадают - то пароль принимается.
Так что перехватить пароль не получится. Может ты как-то не так понял задание?

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

Всего записей: 3794 | Зарегистр. 16-07-2004 | Отправлено: 12:02 27-04-2006
urel

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

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 12:03 27-04-2006
freeek

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
цитата из письма:"По поводу смены паролей. Один из вариантов - пользователь меняет пароль. В некоторый файл закидывается лог смены пароля. Какая-то отдельная программка по расписанию считывает лог и обновляет базу."
я знаю как храняться пароли как передаються , чем различаеться LM хэш от NT, знаю что востановить пароль не льзя из АК, но... надо зделать систему востановления пароля как на почтовых серверах.

Всего записей: 57 | Зарегистр. 04-04-2006 | Отправлено: 12:23 27-04-2006
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
я так понял эта канитель должена работать для студентов или, всетаки, на предприятии?
тебе задачу не корректно поставили...  
 
Добавлено:
как можно получить вывод внешней программы  
а то приходиться запускать таким образом
 
cmd = "cmd /c """"" & SHAPath & """ " & inFile & "  > """ & tmp2 & """"""
 
а потом считывать tmp2, геморно немного
 
Добавлено:
Как произвести запись в таблицу sql данные из файла, да и вобще просто как... HELP =)

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 13:01 27-04-2006 | Исправлено: urel, 13:25 27-04-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
FreemanRU А можешь пояснить вот эту строчку:
 Set CurObject = SetObjectFromDomain() - здесь должен указываьбся адрес объекта в скобках? или что?  
 
 
 
 
Добавлено:
Пробовал в msdn покапаться но нчиего такого не нашел

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



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

Цитата:
Пробовал в msdn покапаться но нчиего такого не нашел


И не найдешь.

Цитата:
SetObjectFromDomain()

Это я просто не расписывал. Эти виртуальная функция, которая должна получать объект из домена. Её код может быть любой. Да и функции может не быть, просто всё сплошных тесктом. Главное то, что в итоге в CurObject должен быть объект из домена.
 
Добавлено:
freeek

Цитата:
систему востановления пароля как на почтовых серверах

Скажу по серету - там тоже пароль восстановить нельзя, если это более-менее серьзеный продукт.
 
Ну а если надо, то сделац как предложили - смена пароля только через скрипт, в этом же скрипте заносим пароль в базу. Такой вариант устроит?

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

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



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
пля :-D я еще думал что так, но решил сначала спросить
 
Добавлено:
Сейчас сидел анализировал и вдруг столкнулся с такой проблемой - смотри ситуация когда группа вложена в группу и получится что ты заменишь cn на , и у тебя полуится путь: ",,ou=test,dc=test,dc=ru"
 
Но вот если заменить "cn=" на "" (пустое место)  но тогда нормально будет отображаться путь или нет?
 
Добавлено:
urel, метод Freemanа мне больше подходит, потому как у меня есть такие элементы, когда группы вложенны друг в друга - Global в Globale. И тогда в твоем способе прийдется отслеживать еще и длину, к-ю нужно отрезать, чтобы выделить только адрес OU.
 
Но другое дело:
disName = obj.distinguishedname
pathG = disName.Replace("CN=" & obj.cn & ",","")
 
Я вот так заменил все cn на пустые места, но  как отобразить это?  
 
Вопрос глупый, но я сегодня с утра туплю и пытаюсь понять, что я не правильно испольую в WSCript.Echo и почему он ничего не отображает

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 11:29 28-04-2006 | Исправлено: Sk1f, 14:17 28-04-2006
FreemanRU



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

Код:
 
strCN = "Group1"
strDN = "CN=Group1,OU=Groups,DN=domain,DN=local"
strOU = Replace(strDN,"CN="&strCN&",","")
WScript.Echo "CN="&strCN
WScript.Echo "DN="&strDN
WScript.Echo "Path="&strOU
 

на выходе имеем:

Цитата:
 
Microsoft (R) Windows Script Host Version 5.6
Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.
 
CN=Group1
DN=CN=Group1,OU=Groups,DN=domain,DN=local
Path=OU=Groups,DN=domain,DN=local
Exit code: 0 , 0000h
 

 

Цитата:
группы вложенны друг в друга - Global в Globale

А приведи пример CN и DN такой группы.

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

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



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
очень туплю... можно два поста последних удалить

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 14:58 28-04-2006
Vpsem

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть следующая задача:
Нужно пинговать подсети путем тупого перебора IP, при этом, по возможности определять имена хостов.
Есть следующее решение:
start.cmd:

Цитата:
 
for /l %%I in (1,1,255) do call sping.cmd %%I
sping.vbs
 

sping.cmd:

Цитата:
 
ping -a -n 1 213.180.204.%1 >> ping.txt
 

sping.vbs:

Цитата:
 
dim Ip(1000)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile1 = objFSO.OpenTextFile("ping.txt", 1)
Set objFile2 = objFSO.CreateTextFile("IpScan.txt")
i = 0
StrItem1 = ""
StrItem2 = ""
StrItem3 = ""
Do Until objFile1.AtEndOfStream
 Ip_Exists = False
IF StrItem2 <> Chr(13) AND Len(StrItem2) <> 0 Then
 StrItem1 = StrItem2
End IF
  StrItem2 = objFile1.ReadLine()
  IF InStr(StrItem2,"Reply") <> 0 _
  OR InStr(StrItem2,"ЋвўҐв") <> 0 _
   Then
    StrItem1 = Right(StrItem1,Len(StrItem1)-InStr(StrItem1," "))
'нужно если пинг русский  StrItem1 = Right(StrItem1,Len(StrItem1)-InStr(StrItem1," "))
'нужно если пинг русский  StrItem1 = Right(StrItem1,Len(StrItem1)-InStr(StrItem1," "))
    StrItem1 = Left(StrItem1,InStr(StrItem1," "))
    StrItem2 = Right(StrItem2,Len(StrItem2)-InStr(StrItem2," "))
    StrItem2 = Right(StrItem2,Len(StrItem2)-InStr(StrItem2," "))
    StrItem2 = Left(StrItem2,InStr(StrItem2,":")-1)
    StrItem3 = StrItem2 + " " + StrItem1
      For Each Str in Ip
       IF Str = StrItem3 Then Ip_Exists = True
      Next
      IF Not Ip_Exists Then Ip(i) = StrItem3: i=i+1
  End IF
Loop
 
For Each StrItem in Ip
  IF NOT IsEmpty(StrItem) Then  objFile2.WriteLine(StrItem)
Next
 
objFile1.Close()
objFile2.Close()
 
 

 
Получаем р-т в виде

Цитата:
 
213.180.204.7 charts.yandex.ru  
213.180.204.8 ya.ru  
213.180.204.9 cards.yandex.ru  
213.180.204.10 sp-money.yandex.ru  
 

 
 Вопрос в следующем: что д.б. поднято в локалке что бы команда ping -a -n 1 x.x.x.x возвращала имена хостов. У меня в сети с доменом возвращает, в сети без домена нет.

Всего записей: 40 | Зарегистр. 28-09-2004 | Отправлено: 22:17 28-04-2006
FreemanRU



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Vpsem
Лучше пользуй nbtstat -A IP, если сеть не сегментована.
Или nslookup, если есть ДНС

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

Всего записей: 3794 | Зарегистр. 16-07-2004 | Отправлено: 15:13 29-04-2006
Vpsem

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FreemanRU
по поводу nbtstat  
- он в результаты не выводит тот IP который обрабатывается,  
- у меня 192.168.0.1 - linux, на ping отвечает на nbtstat нет
- nbtstat дольше работает  
- сложнее распарсить

Всего записей: 40 | Зарегистр. 28-09-2004 | Отправлено: 18:21 29-04-2006
Garik_Lugansk



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Здраствуйте. Есть скрипт DSIP.vbs
 
Dim objWshShell
 
    Set objWshShell = CreateObject("WScript.Shell")
 
    objWshShell.Run "D:\Games\Lineage II\DSIP.bat", 0, false
 
Не видит путь к файлу. Как решить проблему с пробелом. Переименовывать папку нельзя.
 

Всего записей: 429 | Зарегистр. 18-05-2004 | Отправлено: 16:35 30-04-2006
Vpsem

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Garik_Lugansk
objWshShell.Run """D:\Games\Lineage II\DSIP.bat""", 0, false  
 

Всего записей: 40 | Зарегистр. 28-09-2004 | Отправлено: 22:38 30-04-2006
Tiristor



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Vpsem
замени "ping -a" на "nslookup"
и парсить не сложно, и ответы гарантированные..
а "ping -a" гарантированно заставить работать в сети без доменов сложно..

Всего записей: 93 | Зарегистр. 28-09-2005 | Отправлено: 18:12 01-05-2006 | Исправлено: Tiristor, 18:13 01-05-2006
Vpsem

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

Всего записей: 40 | Зарегистр. 28-09-2004 | Отправлено: 01:02 02-05-2006 | Исправлено: Vpsem, 01:02 02-05-2006
Sk1f



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

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 13:53 02-05-2006
serstr

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такая вот проблема.
Тут ранее был описан скрипт for Excel для получения информации из АД. Вот такой (для mail):
 
Sub getuserinfo()  
    Cells.Clear  
     
    Set objConnection = CreateObject("ADODB.Connection")  
    objConnection.provider = "ADsDSOObject"  
    objConnection.Open ("Active Directory Provider")  
   
    CommandText = "Select cn, name, mail"  
    CommandText = CommandText + " from 'LDAP://DC=main,DC=blrt'"  
    CommandText = CommandText + " where objectClass='person' and objectClass<>'computer'"  
    CommandText = CommandText + " ORDER BY cn"  
   
    Set objRecordset = CreateObject("ADODB.Recordset")  
    objRecordset.Open CommandText, objConnection  
   
    n = 1  
    While Not objRecordset.EOF  
        Cells(n, 1).Value = objRecordset.fields("cn").Value  
        Cells(n, 2).Value = objRecordset.fields("Name").Value  
        Cells(n, 3).Value = objRecordset.fields("mail").Value  
        objRecordset.MoveNext  
        n = n + 1  
    Wend  
End Sub  
 
 
 
 
Подскажите, как его переделать чтобы он вытаскивал информацию о том в каких группах состоит юзер и записывал их в ячейки. (Юзер одновременно находится в нескольких группах)

Всего записей: 32 | Зарегистр. 26-04-2006 | Отправлено: 17:14 02-05-2006 | Исправлено: serstr, 17:35 02-05-2006
FreemanRU



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
serstr
objRecordset.fields("memberOf") содержит в себе массив CN групп, в которых состоит пользователь.

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

Всего записей: 3794 | Зарегистр. 16-07-2004 | Отправлено: 18:06 02-05-2006
serstr

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FreemanRU СПАСИБО!
 
А как сделать так чтобы он каждую группу записывал в отдельную ячейку?
Я написал вот так, но там есть несовпадения объектов Object required (Error 424)
 
Sub getuserinfo()
    Cells.Clear
       
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.provider = "ADsDSOObject"
    objConnection.Open ("Active Directory Provider")
   
    CommandText = "Select cn, name, memberOf"
    CommandText = CommandText + " from 'LDAP://DC= DOM ,DC=com'"
    CommandText = CommandText + " where objectClass='person' and objectClass<>'computer'"
    CommandText = CommandText + " ORDER BY cn"
   
    Set objRecordset = CreateObject("ADODB.Recordset")
    objRecordset.Open CommandText, objConnection
   
    n = 1
    m = 3
    While Not objRecordset.EOF
        Cells(n, 1).Value = objRecordset.fields("cn").Value
        Cells(n, 2).Value = objRecordset.fields("Name").Value
       
 For Each strGroup In objRecordset.fields("MemberOf").Value  
        strGroupPath = "LDAP://" & strGroup
        Set objGroup = GetObject(strGroupPath)
        strGroupName = objGroup.CN
        Cells(n, m).Value = strGroupName.Value - ошибка ТУТ !
        m = m + 1
 Next
        objRecordset.MoveNext
        n = n + 1
    Wend
End Sub
 
Добавлено:
Спасибо  большое!
Разобрался сам
 
Sub getuserinfo()
    Cells.Clear
       
    Set objConnection = CreateObject("ADODB.Connection")
    objConnection.provider = "ADsDSOObject"
    objConnection.Open ("Active Directory Provider")
   
    CommandText = "Select cn, name, memberOf"
    CommandText = CommandText + " from 'LDAP://DC=DOM,DC=com'"
    CommandText = CommandText + " where objectClass='person' and objectClass<>'computer'"
    CommandText = CommandText + " ORDER BY cn"
   
    Set objRecordset = CreateObject("ADODB.Recordset")
    objRecordset.Open CommandText, objConnection
   
     n = 2
     
    While Not objRecordset.EOF
        Cells(n, 1).Value = objRecordset.fields("cn").Value
        Cells(n, 2).Value = objRecordset.fields("Name").Value
        m = 3
        Cells(1, 2).Value = objRecordset.fields("MemberOf").Value
        If Cells(1, 2).Value = "" Then GoTo 12
 For Each strGroup In objRecordset.fields("MemberOf").Value
        strGroupPath = "LDAP://" & strGroup
        Set objGroup = GetObject(strGroupPath)
        strGroupName = objGroup.CN
 
        Cells(n, m).Value = strGroupName    
        m = m + 1
 Next
12:        objRecordset.MoveNext
        n = n + 1
    Wend
End Sub

Всего записей: 32 | Зарегистр. 26-04-2006 | Отправлено: 09:56 03-05-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