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

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

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
API в основном используется клиентами программ контроля, хотя может быть полезным и для любых сторонних утилит.
 
Все функции реализованы ввиде COM-сервера.
Примеры использования для C, C++, Delphi находятся здесь
 
Общие замечания:
- доступ к функциям осуществляется через единый интерфейс IRunpadShell
- все функции возвращают S_OK в случае успеха и другие коды в противном случае
- функции не являются Unicode
 
--------------------------------------------------------------------------------
HRESULT GetShellState(OUT RSHELLSTATE *pState);
 
Возвращает статус шелла:
RSS_OFF - шелл отключен
RSS_TURNEDON - шелл включен, но еще не загружен
RSS_ACTIVE - шелл включен, загружен и готов к работе
RSS_INVALID - шелл не инсталлирован
 
Это я взял из хелпа к программе. Возможно ли написать скрипт, который бы использовал API программы? Если да, то подскажите как это сделать.

Всего записей: 529 | Зарегистр. 03-12-2002 | Отправлено: 19:18 12-05-2006
FreemanRU



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
VelDmi
Вы можете сделать Plug-in в виде динамически подгружаемой библиотеки (DLL).
 
Может не совсем то, что тебе нужно, но как пример использовать можно.
ЗЫ Если что - я не проверял это.

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

Всего записей: 3795 | Зарегистр. 16-07-2004 | Отправлено: 19:34 12-05-2006 | Исправлено: FreemanRU, 19:39 12-05-2006
VelDmi

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я почему сюда обратился. Есть пример к программе AutoIt, где доступ к функциям осуществляется вот так:
 
Set oAutoIt = WScript.CreateObject("AutoItX3.Control")
text = oAutoIt.ClipGet()                           ----это функция AutoItX3
WScript.Echo "Clipboard contains:" & text
 
Хотел таким же макаром использовать IRunpadShell и ее rs_api.dll
Но с наскока не получилось. Я не пишу на C, C++, Delphi, а примеры есть только для этих языков. Думал, может на wbs получится использовать api этой программы.

Всего записей: 529 | Зарегистр. 03-12-2002 | Отправлено: 08:03 13-05-2006
FreemanRU



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

Цитата:
Set oAutoIt = WScript.CreateObject("AutoItX3.Control")  

WScript.CreateObject создает объект ACtiveX. Если IRunpadShell имеет ActiveX-компонент, то к нему можно обратится именно так.
А вообще, если очень надо, то попробуй VisualBasic. Синтаксис очень похож на VBScript.

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

Всего записей: 3795 | Зарегистр. 16-07-2004 | Отправлено: 09:44 13-05-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Всем добрый день, утро, вечер. Спать хочу жутко
 
Люди как в Vb задать счетчик.  
Т.е. мне нужно внести в массив названия Group из AD. Так вот как создать счетчик? Только тот который бы автоматически после последней группы выходил бы из цикла.
 
А то мне не нужна ситуация, которая может возникнуть (пример):  
For i=0 to 30
Next
. А групп может быть больше 30 или наоборот меньше

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



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

Цитата:
For i=0 to 30  
Next

for тебе не поможет, попробуй While... Wend или Do... Loop

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

Всего записей: 1367 | Зарегистр. 08-01-2003 | Отправлено: 10:19 15-05-2006
Sk1f



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

Цитата:
For k = 0 To objGroup.distinguishedName.Count -1  
     s1 =  objGroup.distinguishedName
     s1 = s1 & k  
     Next
     WScript.Echo s1

 
 
Добавлено:
Только решение задачи нормального все равно не получится.
 
А нужно: есть OU (1-го уровня)  и OU (2-го уровня). Т.е. dn  organizational unita 2-го уровня:

Цитата:
ou= test2lvl,ou =test1lvl,dc=test,dc=ru

Сама задача заключается в том, чтобы считать эти ou, считать группы в них и потом добавить  глобальные группы из ou 2го уровня в глобальную группу ou 1го уровня (она там 1-2, есть условие по которому выбирается одна  - нужная).  
Но такая фигня получается - допустим я считал все. Тогда может возникнет такая ситуация, что в одной ou(1-го уровня) было три ou (2-го уровня) и после того как я включу цикл включения группы в группу. У меня вместо того чтобы добавиться в одну глобальную группу ou (1-о уровня). Глобальные группы ou (2-го уровня) добавятся не в одну, а по отдельности в другие считанные глобальные группы (1-го уровня).  
 
Как этого избежать?  
 
Пример(может кто не понял):  
группы(OU 1-го уровней):                                         a1,a2,a3,a4,a5,a6
группы(OU 2-го уровня в ОДНОЙ OU(1-го уровня)):  а, б, в, г
 
И как избежать ситуации, чтобы а, б, в, г не добавились так: "а" в a1, "б" в a2, "в" в a3, "г" в a4.
А чтобы было a, б, в, г добавились в a1.

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Sk1f
How Can I Get a List of All the Users in an OU and Its Sub-OUs?
 
Собственно после этого анализируй cn и distiguishedName.

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

Всего записей: 3795 | Зарегистр. 16-07-2004 | Отправлено: 11:43 15-05-2006 | Исправлено: FreemanRU, 11:44 15-05-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
FreeMan, Но это для WMI.
А для WSH такое сделать как?
 
А как создать массив из списка на VBS-е?   Например названия фруктов?  
 

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 12:23 15-05-2006 | Исправлено: Sk1f, 12:28 15-05-2006
FreemanRU



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Sk1f
Так, давай не путать WMI - это технолигия. А WSH - это Windows Script Host, движок обработки скриптов. Это раз.
Во вторых, где ты там увидел WMI?
В третьих, чем тебя не устравивает способ, изложенный в статье?
 
Добавлено:

Цитата:
 как создать массив из списка на VBS-е?   Например названия фруктов?

Dim fruits()
ReDim fruits(3)
fruits(0) = "apple"
fruits(1) = "yabloko"
fruits(2) = "un_eaten"
For each fruit in fruits
   WScript.Echo fruit
Next
 
ReDim fruits(4)
fruits(0) = "apple"
fruits(1) = "yabloko"
fruits(2) = "un_eaten"
fruits(3) = "aprikot"
For each fruit in fruits
   WScript.Echo fruit
Next


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

Всего записей: 3795 | Зарегистр. 16-07-2004 | Отправлено: 12:32 15-05-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
а так, если  
 
arg(z)=objGroup.dn
z=z+1
 
так будет заполняться массив в VBS?

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 17:33 15-05-2006
FreemanRU



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

Цитата:
а так, если  
 
arg(z)=objGroup.dn  
z=z+1  
 
так будет заполняться массив в VBS?  

Да, если выделен достаточно большой размер массива.
А зачем тебе массив? Может всё же можно как-то проще реализовать?

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

Всего записей: 3795 | Зарегистр. 16-07-2004 | Отправлено: 22:50 15-05-2006
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
FreemanRU, размер массива выделять с помощью UBound function?  
 
 
Добавлено:
FreemanRU и точто ли так заполняется массив? Может используется какой метод? (например add)

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 09:04 16-05-2006
Vby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как на VBS узнать ip машины с именем NAME

Всего записей: 781 | Зарегистр. 16-09-2004 | Отправлено: 14:08 16-05-2006
FreemanRU



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Vby
Если есть административный доступ к компу, то через WMI можно выдрать все ip-адреса.
 
Если просто нужно разрешить имя, то через пинг:

Код:
 
Dim compname = 'comp'
Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._
ExecQuery("select * from Win32_PingStatus where address = '"&compname&"'")
For Each objStatus in objPing
If Not IsNull(objStatus.ProtocolAddress) Then
WScript.echo objStatus.ProtocolAddress
Else
WScript.echo "IP-адрес не найден"
End If
Next
 


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

Всего записей: 3795 | Зарегистр. 16-07-2004 | Отправлено: 14:57 16-05-2006
Vby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FreemanRU
К компу доступа  нет,  
Win32_PingStatus ProtocolAddress показывает ip когда есть ping до компа, если нету, возвражает пусто.
Можно ли как из ДНС выдрать ip?
 
Добавлено
Сделал так:
 
machine = "name"  
strComputer = "*"
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & _
        "\root\MicrosoftDNS")
 
Set colItems = objWMIService.ExecQuery("Select * from MicrosoftDNS_AType where ownername = '"_  
& machine & "'")
 
For Each objItem in colItems
ipaddress = objItem.IPAddress
Next
 
 

Всего записей: 781 | Зарегистр. 16-09-2004 | Отправлено: 15:31 16-05-2006 | Исправлено: Vby, 11:22 17-05-2006
serstr

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такой вопросик.
 
Я определяю, точнее должен определить IP машины на которой отрабатывает скрипт, а затем сравнить его с тремя масками разных сетей, и в зависимости от того в к какой сети принадлежит этот IP, выполнять определенные дествия. Допустим маска одной сети, 123.123.123.0/26 т.е. 64 адреса, а второй сети 123.123.123.128/26, а третьей 111.111.11.0/24 на 254 адреса
 
Вопрос в том как организовать сравнение IP адреса машины с маской сети?

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



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
serstr
Через побитовое И (умножение). Т.е. если АДРЕС и МАСКА = МАСКА, то адрес пренадлежит этой сети...

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

Всего записей: 3795 | Зарегистр. 16-07-2004 | Отправлено: 12:29 17-05-2006 | Исправлено: FreemanRU, 12:31 17-05-2006
serstr

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FreemanRU
 
Если не сложно, напиши на примере, а то я както туговато соображаю логику я понял, а вот синтаксис

Всего записей: 32 | Зарегистр. 26-04-2006 | Отправлено: 12:39 17-05-2006
FreemanRU



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

Код:
 
x = 3 'двоичный - 011  
y = 2 'двоичный - 010
 
WScript.Echo x or y ' 3 = двоичный 11. Побитовое сложение
WScript.Echo x and y ' 2 = двоичный 10. Побитовое умножение
 


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

Всего записей: 3795 | Зарегистр. 16-07-2004 | Отправлено: 14:10 17-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