Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Автоматизация администрирования. Часть 2

Автор: Sk1f
Дата сообщения: 29.01.2007 09:33
Граждане Скриптологи. Вопрос не по теме.
Но спрашивать в другом топике не вижу смысла.

Возникла проблема: на работе пишу скрипты на PrimalScript (программа была куплена еще в прошлом году). Хотел поставить ее на ноут, чтобы работать дома. Но потом вспомнил, что активация программы происходит через интернет, поэтому я не думаю что получится поставить два раза на разные машины.
У кого есть PrimalScript с crack-ом. Скиньте на почту.

p.s. email напишу в PM
Автор: urel
Дата сообщения: 29.01.2007 12:26
SamsungC095
импортом. для SQL сервера будет мастер - поищи

Добавлено:
gap5
3го параметра у movefolder/movefile нет. удали предварительно папку. усли не катит, то тогда наверно рекурсией, пофайлово. другое чтот в голову не прходит. еще можно исспользовать copy/xcopy (кста методы copyfile/copyfolder имеют 3й парамерт overwrite) - но это может занять больше времени чем перемещение(в пределах физического раздела).
у тебя пропущен strComputer
сделай strComputer ="." для текущего компа.


Добавлено:
Sk1f
с этим в варезник
Автор: gap5
Дата сообщения: 29.01.2007 12:42

Цитата:
Sk1f Самый простой и работоспособный способ
Создаешь групповую политику и приделываешь к ней скрипт.
Скрипт:
strComputer = "."
Set objWMIService = GetObject_
("winmgmts:{impersonationLevel=impersonate,(Shutdown)}\\" & _
strComputer & "\root\cimv2")


Интересно, а как его запускать? В групповой политике скрипты либо Startup/Logon либо Shutdown/Logoff...
Автор: urel
Дата сообщения: 29.01.2007 12:43
ЗЫЖ а я юзаю vbsedit - сейчас есть бесплатная версия но без дебага =)

Добавлено:
хттп://www.vbsedit.com/

Добавлено:
gap5
смотря как его нужно запускать - разово или постоянно. если разово то можно с удаленной машины, перебрав в strComputer все интересующие компы(они есесно должны быть включены, и у пользователя запустивщего скрипт должны быть права админа на удаленных машинах)
Автор: gap5
Дата сообщения: 29.01.2007 12:56
urel
тогда смысл добавлять этот скрипт в групповые политики?
Автор: Sk1f
Дата сообщения: 29.01.2007 13:45
gap5 я ошибся. Правильно будет так, как описал urel


Автор: gap5
Дата сообщения: 29.01.2007 14:10
urel
Ругается теперь так:
Line 13
Char 45
Error Expected ')'
Code 800A03EE


Цитата:
' These are the Names of Software I want to remove
' and as they appear in Control Panel -> Add/Remove Softyware:
strComputer ="."

Dim ArrOfProcessesToTerminate, strTargetProcToTerminate
ArrOfProcessesToTerminate = Array("Sonork Server","Intel(R) PRO Network Connections 11.1.0.19")

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

For Each strTargetProcToTerminate In ArrOfProcessesToTerminate
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Product Where Name = "'" & strTargetProcToTerminate & "'")

For Each oProcess in colProcessList
wscript.popup "oProcess: " & ThisOne _
Chr(13) & "oProcess.InstallDate: " & oProcess.InstallDate _
Chr(13) & "oProcess.InstallLocation: " &
oProcess.InstallLocation _
Chr(13) & "oProcess.Name: " & oProcess.Name _
Chr(13) & "oProcess.Description: " & oProcess.Description
oProcess.Uninstall()

Next 'For Each oProcess In colProcesses

Next 'For Each strTargetProc In arrTargetProcs
Автор: mistx
Дата сообщения: 29.01.2007 14:13
Sk1f
urel
А можно ли тогда создать какой-нибудь bat файл
на сервере запустить его,и он бы выключил все компы кроме
себя?
Автор: Sk1f
Дата сообщения: 29.01.2007 14:29
mistx
Конечно. Можно создать скрипт, не обязатально .bat-ник. Перечислить компьютеры в теле скрипта, которые хочешь выключить:
strComputer ="comp1"
strComputer ="comp2"
strComputer ="comp3"
strComputer ="comp4"
и тд.
Не указываешь имена машин, к-е не хочешь чтобы выключались.
Пример: strComputer="name server" и strComputer="."
И запустить скрипт.

Добавлено:

gap5 в этой строчке ошибка
("Select * from Win32_Product Where Name = "'" & strTargetProcToTerminate & "'")

Попробуй заменить на эту

Цитата:

("Select * from Win32_Product Where Name = """ & strTargetProcToTerminate & """)



Автор: gap5
Дата сообщения: 29.01.2007 14:55
Sk1f
теперь line 13 char 81 unterminated string constant...
у вас там дебаггера нет под рукой? а то это как аборт по фотографии...
Автор: Sk1f
Дата сообщения: 29.01.2007 15:43
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 & """")

Кавычку в конце забыл.(
Автор: urel
Дата сообщения: 29.01.2007 17:41
gap5
скачай vbsedit, в варезнике можно найти лекарство.

Добавлено:
Sk1f
незнаю... можно придумать какойто буфер, из которого можно писать и с помощью которого считать н строк до конца
самый простой вариант - читать в 2 переменные те - в 1ю читаеш - 2ю пишеш, во 2ю - загоняешь первую, и опять читаешь- пишешь
Автор: jONES1979
Дата сообщения: 29.01.2007 20:09
Sk1f

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


в варезнике, пососедству есть посвященная тема. я там брал
Автор: mistx
Дата сообщения: 29.01.2007 20:39
Sk1f



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


К сожалению я не очень разбираюсь в сценариях.
Не могли бы Вы подробно описать сценарий?

я понял это так:

strComputer="srv261.local" strComputer="comp1"

так?
Автор: gap5
Дата сообщения: 29.01.2007 20:43
Итак продолжаем тему автоматизации...

Теперь хочется сделать управляшку доступа к шарам.
На сервере есть расшаренные папки, надо через VBS запрещать\разрешать доступ юзеров к конкретной папке. Тут я вижу два варианта: либо добавлять\удалять в настройках безопасности папки группу юзеров, либо в настройках безопасности разрешить доступ для одной группы и запретить для другой, а скриптом уже перекидывать юзеров из одной группы в другую...

Как сие лучше реализовать?

Сцуперзамечательно было бы если бы скрипт запускался с удаленного компа (а не на том компе где лежат шары).
Автор: urel
Дата сообщения: 30.01.2007 06:10
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
Автор: Sk1f
Дата сообщения: 30.01.2007 09:14
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)
Автор: urel
Дата сообщения: 30.01.2007 10:22
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%
Автор: Sk1f
Дата сообщения: 30.01.2007 12:52

Цитата:

from urel

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


urel, согласен так проще. Но как узнать что после 3-й строчки от конца читаемого файла нужно прекратить запись?
Автор: mistx
Дата сообщения: 30.01.2007 13:04
Sk1f
спасибо попробую.

urel
как сделать так чтобы на сервак, скоторого запускаю файл
выключение не распространялось?

Автор: Sk1f
Дата сообщения: 30.01.2007 14:20
Существует ли в VBS оператор, который выполняет теже функции, что и оператор break в jscript.
Автор: urel
Дата сообщения: 30.01.2007 20:20
Sk1f
алгоритм думается такой
буфер 10 строк
цикл - читаем до конца
буфер полный - пишем первую строку в новый файл, сдвигаем буфер/хитро считаем счетчик
читаем из файла
пишим в буфер + увеличиваем счетчик буфера
конец цикла
пишем все что осталось из буфера в файл
' и вот на этом месте у нас есть свобода в размер буфера строк, при размере файла > размера буфера

Добавлено:
mistx
например так
if not "%%q"=="\\SRV" (
    echo shuting down %%q
    echo shutdown /s /m %%q
    echo.
    )
Автор: jONES1979
Дата сообщения: 31.01.2007 05:14

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


Do [{While | Until} condition]
[statements]
[Exit Do]
[statements]
Loop
Автор: Sk1f
Дата сообщения: 31.01.2007 09:07
jONES1979 спасибо.
Автор: mistx
Дата сообщения: 31.01.2007 10:38
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.
)
Автор: urel
Дата сообщения: 31.01.2007 10:46
mistx
посмотри как net view возвращает имя твоего компа.
это будет netbios имя, скорее всего просто "\\SRV313"
Автор: Sk1f
Дата сообщения: 31.01.2007 12:26
1. Необходимо, чтобы скрипт выполнял работу в 12 часов ночи. Как это можно сделать?

Через Планировщик задач, какая-то хрень происходит. Не хочет выполняться.
Можно ли запускать напрямую или нужно создать .bat-ник ?

2. После отработки первого скрипта нужно чтобы запускался второй. Как это можно сделать?




Автор: mistx
Дата сообщения: 31.01.2007 12:28
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.
)
Автор: inetimon
Дата сообщения: 31.01.2007 12:45
Помогите со следующей проблемой.
Как задать параметр с кавычками. Мне надо задать параметр ""текст"" (к примеру), Скрипт выдает ошибку, т.к. считывает только первые "" а остальное ему не понятно.

SearchString = ""текст"" ??????
Автор: Sk1f
Дата сообщения: 31.01.2007 12:49
mistx все компьютеры, к-е тебе нужно зашутдаунить находятся в домене?



Добавлено:
inetimon
пример:
d = """text"""
WScript.echo d

результат: "text"

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

Предыдущая тема: BackUp Win2003Serer


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.