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

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

 

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



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
urel я уже задавал вопрос - о способе пропуска строк в текстовом файле при считывании его.  
Понимаю как сделать на пронумерованные строки строки(первые, вторые,10-я и тд). Но как пропустить последние 2 cтроки наиболее оптимальным путем не понимаю.  
 
Придумал такой способ -

Цитата:
 
n=1
Do While Not readfile.AtEndOfStream
n=n+1
Loop
str1=""
str2=""
For k=1 to n
  If (k >= 3)&(k<n-2) Then
          FtW.WriteLine str1
     End If
     i = i + 1
     Str1 = Str2
     Str2 = readfile.ReadLine
 
 

Однако назвать его оптимальным язык не повернется. Получается что я файл два раза считываю.
Файл весит 10 -15 мб. И поэтому такой способ вдвойне плох.
 
Может есть какие идеи - как пропустить последние строчки в файле, используя только одно считывание строк?  
 
 
 
Добавлено:
gap5  
 
("Select * from Win32_Product Where Name = """ & strTargetProcToTerminate & """")
 
Кавычку в конце забыл.(  

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 16:43 29-01-2007
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
gap5
скачай vbsedit, в варезнике можно найти лекарство.
 
Добавлено:
Sk1f
незнаю... можно придумать какойто буфер, из которого можно писать и с помощью которого считать н строк до конца
самый простой вариант - читать в 2 переменные те - в 1ю читаеш - 2ю пишеш, во 2ю - загоняешь первую, и опять читаешь- пишешь

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 18:41 29-01-2007
jONES1979



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

Цитата:
Возникла проблема: на работе пишу скрипты на PrimalScript  

 
в варезнике, пососедству есть посвященная тема. я там брал

Всего записей: 324 | Зарегистр. 20-05-2005 | Отправлено: 21:09 29-01-2007
mistx

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

Цитата:
mistx
Конечно. Можно создать скрипт, не обязатально .bat-ник.  
Не указываешь имена машин, к-е не хочешь чтобы выключались.  
Пример: strComputer="name server" и  strComputer="."  

 
К сожалению я не очень разбираюсь в сценариях.
Не могли бы Вы подробно описать сценарий?
 
я понял это так:
 
strComputer="srv261.local" strComputer="comp1"  
 
так?

Всего записей: 765 | Зарегистр. 13-01-2005 | Отправлено: 21:39 29-01-2007 | Исправлено: mistx, 21:39 29-01-2007
gap5



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Итак продолжаем тему автоматизации...
 
Теперь хочется сделать управляшку доступа к шарам.
На сервере есть расшаренные папки, надо через VBS запрещать\разрешать доступ юзеров к конкретной папке. Тут я вижу два варианта: либо добавлять\удалять в настройках безопасности папки группу юзеров, либо в настройках безопасности разрешить доступ для одной группы и запретить для другой, а скриптом уже перекидывать юзеров из одной группы в другую...
 
Как сие лучше реализовать?
 
Сцуперзамечательно было бы если бы скрипт запускался с удаленного компа (а не на том компе где лежат шары).

Всего записей: 902 | Зарегистр. 30-05-2006 | Отправлено: 21:43 29-01-2007
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
gap5
вобще  M$ пропоандирует такой принцип "Users &#8594; global groups &#8594; universal groups &#8594; domain local groups &#8594; permissions to resources"
так что действительно привильно - создать группы, и потом для этих групп открывать доступ, и только для них. запрещать доступ, как правило, для остальных не нужно тк.
1. deny имеет приоритет перед allow и если пользователь входит в 2 группу которой стоит запрет на доступ - не будет иметь доступа.
2. для тех кому доступ не разрешен явно - он запрещен.
 
ищи в этой и в старой теме про cacls/xcacls/xacls.vbs(пару страниц назад)/setacl

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 07:10 30-01-2007
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
gap5 На 3-й странице смотри мое сообщение про xcacls.vbs и работу функции WShell.
 
mistx
В блокноте добавляешь пишешь следующие строчки:

Цитата:
 
strComputer = "testNMMSNDDS"
Set objWMIService = GetObject_
    ("winmgmts:{impersonationLevel=impersonate,(Shutdown)}\\" & _
        strComputer & "\root\cimv2")
 
Set colOperating Systems = objWMIService.ExecQuery _
    ("Select * from Win32_OperatingSystem")
 
For Each objOperatingSystem in colOperatingSystems
    objOperatingSystem.Win32Shutdown(1)
Next
 
 
 Сохраняешь как <name>.vbs  
 
strComputer = "testNMMSNDDS"     - в кавычках название компьютера.    
 
p.s. "." - это указывает на выполнение скрипта, на компьютере с которого будешь его  
запускать (короче если запустишь скрипт у себя на машине, то скрипт ее вырубит)
 
p.p.s.s. Имена машин, на которые будет действовать скрипт, можно получать несколькими путями:
1. Добавить их в массив. И потом извлекать их с помощью цикла из массива.
2. Считывать их из какого-то источника с помощью цикла. (например из AD)  

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 10:14 30-01-2007
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sk1f
mistx
всетаки наверно самый простой вариант - это такой батник - который зашатдаунит _все_ компьютеры которые видны в сетевом окружении.  

Код:
@echo off
 
set txt=%TEMP%\jsjflsdkf.tmp
net view > %txt%
 
for /f "skip=3" %%q in (%txt%) do (
echo shuting down %%q
shutdown /s /m %%q
echo.
)
del /q  %txt%

 

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 11:22 30-01-2007
Sk1f



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

Цитата:
 
from urel
 
Sk1f
незнаю... можно придумать какойто буфер, из которого можно писать и с помощью которого считать н строк до конца
самый простой вариант - читать в 2 переменные те - в 1ю читаеш - 2ю пишеш, во 2ю - загоняешь первую, и опять читаешь- пишешь
 

 
urel, согласен так проще. Но как узнать что после 3-й строчки от конца читаемого файла нужно прекратить запись?

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 13:52 30-01-2007 | Исправлено: Sk1f, 14:01 30-01-2007
mistx

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

Всего записей: 765 | Зарегистр. 13-01-2005 | Отправлено: 14:04 30-01-2007 | Исправлено: mistx, 14:17 30-01-2007
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Существует ли в VBS оператор, который выполняет теже функции, что и оператор break в jscript.

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 15:20 30-01-2007
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sk1f
алгоритм думается такой
буфер 10 строк
цикл - читаем до конца
буфер полный - пишем первую строку в новый файл, сдвигаем буфер/хитро считаем счетчик
читаем из файла
пишим в буфер + увеличиваем счетчик буфера
конец цикла
пишем все что осталось из буфера в файл
' и вот на этом месте у нас есть свобода в размер буфера строк, при размере файла > размера  буфера
 
Добавлено:
mistx
например так
if  not "%%q"=="\\SRV"  (
    echo shuting down %%q
    echo shutdown /s /m %%q
    echo.
    )

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 21:20 30-01-2007
jONES1979



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

Цитата:
Существует ли в VBS оператор, который выполняет теже функции, что и оператор break в jscript.  

 
Do [{While | Until} condition]
    [statements]
  [Exit Do]
    [statements]
Loop

Всего записей: 324 | Зарегистр. 20-05-2005 | Отправлено: 06:14 31-01-2007
Sk1f



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

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

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
urel
Что-то у меня не получилось.
какая должна быть последовательность?
 
@echo off  
 
set txt=%TEMP%\jsjflsdkf.tmp  
net view > %txt%  
 
for /f "skip=3" %%q in (%txt%) do (  
echo shuting down %%q  
shutdown /s /m %%q  
echo.  
)  
del /q  %txt%
 
if  not "%%q"=="\\SRV313.local"  (  
    echo shuting down %%q  
    echo shutdown /s /m %%q  
    echo.  
    )

Всего записей: 765 | Зарегистр. 13-01-2005 | Отправлено: 11:38 31-01-2007
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mistx
посмотри как net view возвращает имя твоего компа.
это будет netbios имя, скорее всего просто "\\SRV313"

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 11:46 31-01-2007
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
1. Необходимо, чтобы скрипт выполнял работу в 12 часов ночи. Как это можно сделать?  
 
Через Планировщик задач, какая-то хрень происходит. Не хочет выполняться.  
Можно ли запускать напрямую или нужно  создать .bat-ник ?
 
2. После отработки первого скрипта нужно чтобы запускался второй. Как это можно сделать?
 
 
 
 

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 13:26 31-01-2007 | Исправлено: Sk1f, 14:13 31-01-2007
mistx

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
urel
в cmd пишет  
shuting down \\serv313
shuting down \\serv313
shuting down \\serv313
shuting down \\serv313
shuting down \\serv313
shuting down \\serv313
shuting down \\serv313
shuting down \\serv313
 
изменил на serv313, но безрезультатно
 
 
 @echo off  
 
set txt=%TEMP%\jsjflsdkf.tmp  
net view > %txt%  
 
for /f "skip=3" %%q in (%txt%) do (  
echo shuting down %%q  
shutdown /s /m %%q  
echo.  
)  
del /q  %txt%
 
if  not "%%q"=="\\SERV313"  (  
    echo shuting down %%q  
    echo shutdown /s /m %%q  
    echo.  
    )

Всего записей: 765 | Зарегистр. 13-01-2005 | Отправлено: 13:28 31-01-2007
inetimon



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите со следующей проблемой.  
Как задать параметр с кавычками. Мне надо задать параметр ""текст"" (к примеру), Скрипт выдает ошибку, т.к. считывает только первые "" а остальное ему не понятно.
 
SearchString = ""текст"" ??????
 

Всего записей: 41 | Зарегистр. 10-11-2004 | Отправлено: 13:45 31-01-2007
Sk1f



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
mistx все компьютеры, к-е тебе нужно зашутдаунить находятся в домене?
 
 
 
Добавлено:
inetimon
пример:
 d = """text"""
WScript.echo d
 
результат:  "text"

Всего записей: 198 | Зарегистр. 04-04-2006 | Отправлено: 13:49 31-01-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.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru