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

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

Автор: 4aplin
Дата сообщения: 06.06.2008 10:47
Доброе время суток всем! Как написать скриптик, который проверял серверы на работу сервисов??? Да так, чтобы если всё работает, никаких действий не происходит... Если упал, до посылал сообщение о его бездействии??
Автор: rosalin
Дата сообщения: 06.06.2008 13:21
Ребята как к[more=этому скрипту]
Цитата:
Выгрузка даных о пользователях из Active Directory в Excel
Const ADS_SCOPE_SUBTREE = 2

Set objExcel = CreateObject("Excel.Application")

objExcel.Visible = True
objExcel.Workbooks.Add

objExcel.Cells(1, 1).Value = "Login"
objExcel.Cells(1, 2).Value = "Имя"
objExcel.Cells(1, 3).Value = "Отчество"
objExcel.Cells(1, 4).Value = "Фамилия"
objExcel.Cells(1, 5).Value = "Выводимое Имя"
objExcel.Cells(1, 6).Value = "Описание"
objExcel.Cells(1, 7).Value = "Комната"
objExcel.Cells(1, 8).Value = "Номер телефона"
objExcel.Cells(1, 9).Value = "Эл. почта"
objExcel.Cells(1, 10).Value = "Улица"
objExcel.Cells(1, 11).Value = "Город"
objExcel.Cells(1, 12).Value = "Область"
objExcel.Cells(1, 13).Value = "Индекс"
objExcel.Cells(1, 14).Value = "Страна"
objExcel.Cells(1, 15).Value = "Должность"
objExcel.Cells(1, 16).Value = "Отдел"
objExcel.Cells(1, 17).Value = "Организация"
objExcel.Cells(1, 18).Value = "distinguishedname"
objExcel.Cells(1, 19).Value = "cn"

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"

Set objCommand.ActiveConnection = objConnection
objCommand.Properties("Page Size") = 100
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
objCommand.CommandText = _
"SELECT cn, canonicalname, distinguishedname,sAMAccountName,givenName, initials, SN, displayName, description, "_
& "physicalDeliveryOfficeName, telephoneNumber,mail, streetAddress, l ,st, postalCode, " _
& "c, title, department, company FROM " _
& "'LDAP://dc='Имя домена',dc=local' WHERE " _
& "objectCategory='user'"

Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
x = 2

Do Until objRecordSet.EOF
objExcel.Cells(x, 1).Value = objRecordSet.Fields("sAMAccountName").Value
objExcel.Cells(x, 2).Value = objRecordSet.Fields("givenName").Value
objExcel.Cells(x, 3).Value = objRecordSet.Fields("initials").Value
objExcel.Cells(x, 4).Value = objRecordSet.Fields("SN").Value
objExcel.Cells(x, 5).Value = objRecordSet.Fields("displayName").Value
objExcel.Cells(x, 6).Value = objRecordSet.Fields("description").Value
objExcel.Cells(x, 7).Value = objRecordSet.Fields("physicalDeliveryOfficeName").Value
objExcel.Cells(x, 8).Value = objRecordSet.Fields("telephoneNumber").Value
objExcel.Cells(x, 9).Value = objRecordSet.Fields("mail").Value
objExcel.Cells(x, 10).Value = objRecordSet.Fields("streetAddress").Value
objExcel.Cells(x, 11).Value = objRecordSet.Fields("l").Value
objExcel.Cells(x, 12).Value = objRecordSet.Fields("st").Value
objExcel.Cells(x, 13).Value = objRecordSet.Fields("postalCode").Value
objExcel.Cells(x, 14).Value = objRecordSet.Fields("c").Value
objExcel.Cells(x, 15).Value = objRecordSet.Fields("title").Value
objExcel.Cells(x, 16).Value = objRecordSet.Fields("department").Value
objExcel.Cells(x, 17).Value = objRecordSet.Fields("company").Value
objExcel.Cells(x, 18).Value = objRecordSet.Fields("distinguishedname").Value
objExcel.Cells(x, 19).Value = objRecordSet.Fields("cn").Value
x = x + 1
objRecordSet.MoveNext
Loop

Set objRange = objExcel.Range("A1")
objRange.Activate

Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

Set objRange = objExcel.Range("B1")
objRange.Activate

Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

Set objRange = objExcel.Range("C1")
objRange.Activate

Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

Set objRange = objExcel.Range("D1")
objRange.Activate

Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

Set objRange = objExcel.Range("E1")
objRange.Activate

Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

Set objRange = objExcel.Range("F1")
objRange.Activate

Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

Set objRange = objExcel.Range("G1")
objRange.Activate

Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

Set objRange = objExcel.Range("H1")
objRange.Activate

Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

Set objRange = objExcel.Range("I1")
objRange.Activate

Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

Set objRange = objExcel.Range("J1")
objRange.Activate

Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

Set objRange = objExcel.Range("K1")
objRange.Activate

Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

Set objRange = objExcel.Range("L1")
objRange.Activate

Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

Set objRange = objExcel.Range("M1")
objRange.Activate

Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

Set objRange = objExcel.Range("N1")
objRange.Activate

Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

Set objRange = objExcel.Range("O1")
objRange.Activate

Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

Set objRange = objExcel.Range("P1")
objRange.Activate

Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

Set objRange = objExcel.Range("Q1")
objRange.Activate

Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

Set objRange = objExcel.ActiveCell.EntireColumn
objRange.Autofit()

Set objRange = objExcel.Range("A1").SpecialCells(11)
Set objRange2 = objExcel.Range("C1")
Set objRange3 = objExcel.Range("A1")
objExcel.Quit

[/more] еще имена компьютеров приделать очень удобный скриптик
Автор: PIL123
Дата сообщения: 06.06.2008 17:26
---
Удалено
---
Автор: Real Root
Дата сообщения: 06.06.2008 18:25
aar
Попробуй в начала скрипта поставить строку:
On Error Resume Next

Refugee
Скачал я VBScript obfuscator - но честно говоря он слишком сложен. Я чето так и не догнал, как им пошифровать файл. Блин, лучшеб они console application сделали без всяких выгибонов.

То что VBScript запечатанный MS Encoder-ом можно прочитать и дешифровать знают те, кто умеет писать VBS скрипты. Мне же нужно защитить скрипт от изменения кухарками, так, чтоб пути они потом на свои не могли поменять. Так что, если сможете помочь в пользовании утилитой от MS - буду очень признателен (хотя я вам и так очень признателен).
Впринципе, подойдет любая другая прога которая сможет скрыть код скрипта от изменения и прочтения неискушенным пользователем.

Спасибо
Автор: Cyril Konst
Дата сообщения: 06.06.2008 18:38
Народ, а как из eventlog'а (журнала событий) получить последнее сообщение с определённым ID?
Автор: Refugee
Дата сообщения: 06.06.2008 23:54
Real Root
например, stunnix obfuscator по второй ссылке гугля
"C:\Program Files\Stunnix-VBScript-Obfuscator\bin\vbs-obfus.pl" -O wsh la.vbs -o ola.vbs
породил следующее: [more]
(текст записать в файл ola.uue и открыть винраром)

section 1 of 1 of file ola.rar < MxUUE v0.6.4 (c) 1999-2001 Maxxi >

begin 644 ola.rar
M4F%R(1H'`,^0<P``#0````````#UTW0@D"P`*@,``)\*```".ZH(B@,'QS@=
M,P<`(````&]L82YV8G,`\$]@7P@=C,S-&]7;XK#!<6EU"-QR-N!?XQ==W4,;
MO3W;C@[^."R1SM`MEO:R]KOO?II;?36S9VO6-.CVX._ZT)$T_$EXO&Y'/C37
MB2?B:2:1^?@D>?AB^"(T(CST(L\DF#&YHR]_W_>CDM0J8<NN9YT9H\.5.>A0
MBP,W_P]XOPV/X]:<&L/8>PJQ.>9DKAO84YV=ISNR0#$)V78#Z?YJC/UV3]:L
M!]_:H%R_HOU1=J/EU9(N?J^$0IXXK%4_?QY:/'AEZX.Q[#Z2]S?3H\/\<L;Q
M&/!T;LDRGFYJ,6_KL*N`.!H'TCRA\Y/B!(4M.%.L@<8(NZYOK128OI3H(U0U
M4-6MJ0F[HI=:Q/NW!:]<(()1[.N$K`K(V5DXEN!FRY+V*[I_P/UM%)Y#=_UL
M$=Q+?"C:@02-GJ*-5)!2I5SD>JO]-*+F6+,%MM1XUEQY9#4*"['@528%L++H
M[]X`5`+^-4O`KA)8M2PH;54"P,MH?V6:WHVJ*P']PU`B.[4P:1O`H=:7+7</
MN:U`D,+6RV-=P79?\NE;[I;ZU>&E`G)@/0VE;4=/04-71BOM2V-ULC`6NC37
MEH(^NF$`1C@HK;9M`5`*U@7)CMBB1L+J;H:H?#LO7LZVR+J'[W4VWDOSK?,+
M3WK)Q`%>KT?$TH8_X-.\].<7JK;<"[7B3O]WPW#BS&(R?$B/T+=W"!P<6:6"
MF#*>GL6^->50.`HO%[W*X3<#N$IY6Y<\\=$V2=/(E/(L4A(JK'K/G"HE(>(T
MIX]HY)L:<X0HA2>II1'YM8]'LJ*)UXCNGT6VVDV;*\:$([=%MSDA"*NS3YJ.
M^SQ2I=)YN3\)*)I7&(:SR]S\B+8R/OW.7YRE?M.4=R)X0UBZ'!RXYI&+!S!J
ME4"-$U#B2RC%F1_;)V$%N!R;B3:)$#ML[IO(?FXK7!14S,KYR;!?A#@K1*YB
MV)HCY4F>$4<1-N=JX0X+K0V\4M75+C!\%:9TX"/6TV8:"WL<Q4V?B@-:^!,)
ML?U*_-F/!/1KE9:M>GZ?R5_3R.32PXLF3+"';\8D^\/PW)A#ND7\W[3^'*NU
:_1=9"LS>OZ5F-^5/=JV/#C5?^<0]>P!`!P"'
`
end
sum -r/size 38247/1240 section (from "begin" to "end")
sum -r/size 31253/881 entire input file

[/more]
Автор: Real Root
Дата сообщения: 07.06.2008 11:28
Refugee
Чето я вобще туплю.
"C:\Program Files\Stunnix-VBScript-Obfuscator\bin\vbs-obfus.pl" -O wsh la.vbs -o ola.vbs - Это нужно в консоли набирать?
И проканает ли все это на trial версии?

Вобще, у меня в папке bin нету файла vbs-obfus.pl, там есть только vbs-obfus.pl. Я пытался ему подставить расширение pl, но этот тип файлов не зарегистрирован у меня в системе. Пытался связать pl файлы с perl.exe - ничего не вышло.

Поэтому я так и не догнал как пошифровать мой скрипт.
Еще раз обращаю внимание на то, что Stunnix VBS-Obfus version 3.6 не зарегистрированная trial версия.

Добавлено:
Refugee
Кажись разобрался. Вся проблема у меня в том, что у меня именно trial версия. Как оказалось, она просто заменят имена объектов на ReplacementFor_ - а такой результат я уже получал.
Вобщем пошел покупать прогу.
Автор: Refugee
Дата сообщения: 07.06.2008 13:03
Real Root
конечно, в консоли
vbs-obfus.pl - это переименованный vbs-obfus; можно было просто запускать perl vbs-obfus
у меня стоит ActiveState Perl
триал, судя по комментариям в файле, не имеет некоторых фишек.

Добавлено:
надо сделать список идентификаторов (-D file), оставить там только библиотечные и передать его обфускатору (--excludeidentsfile file)
Автор: Real Root
Дата сообщения: 08.06.2008 21:07
Refugee
Что значит оставить только библиотечные идентификаторы? Я в VBS скриптах пока что нуль полный - так что извиняй.
Да и что-то слишком туго они мне даются. Установил ActiveState Perl 7.2 - набор с варезника. После установки ни одно из приложений пакета не стартует - говорит Perl не найден. Сейчас все антивири удалил, да и вобще все что можно (в т.ч. и VBS Obfus и сам Perl) - надо перезагружаться - потом заново попробую - надеюсь поможет.
Но, ИМХО, раз с таким запорками дело начинается, то потом проще будет. Надеюсь
Автор: Oldster
Дата сообщения: 09.06.2008 06:37
rosalin

Цитата:
имена компьютеров

кто за каким сидит или просто компы вытащить из AD?
Автор: north_crow
Дата сообщения: 09.06.2008 10:55
народ!
нужен скрип который бы мониторил бы DHCP на предмет появления новых адресов.
пересмотрел обе ветки этого топика но ничего ненашел
Автор: Teo
Дата сообщения: 09.06.2008 12:42
люди, подскажите, а как авторизоваться у LDAP провайдера?
и вообще, какие провы поддерживают авторизацию?
чет роюсь, роюсь.... без толку
пристрелите меня линком =)
Автор: aleksanchez
Дата сообщения: 09.06.2008 13:55
Teo
Вот пример поискового запроса к AD с авторизацией
Может чем поможет

Код:
'Настраиваем соединение перед открытием
Set con = CreateObject("ADODB.Connection")
Set Com = CreateObject("ADODB.Command")
con.Provider = "ADsDSOObject"
'Если необходимо подключиться от имени другой учетной записи, можно
'настроить дополнительные свойства:
'con.Properties("User ID") = strDomain + "\" + strUserID
'con.Properties("Password") = strPassword

'Открываем соединение со службой каталогов
con.Open "Active Directory Provider"

'Затем настраиваем объект команды
Set Com.ActiveConnection = con
Com.CommandText = "<LDAP://DC=home,DC=local>;" & _
"(&(objectClass=user)(objectcategory=person));AdsPath, cn,sAMAccountName;subTree"
'И выполняем ее
Set rs = Com.Execute
'Затем проходим циклом по объекту Recordset и выводим нужные значения
Do While rs.EOF = False
Wscript.Echo rs.Fields("AdsPath") & vbTab & _
    rs.Fields("cn")& vbTab & rs.Fields("sAMAccountName")
rs.MoveNext
Loop

Автор: YNY
Дата сообщения: 10.06.2008 05:28

Цитата:
защитить скрипт от изменения

да для этой цели шифрование -- эта просто супер решение )
дай права только на чтение и все ЫЫЫЫЫЫЫЫ
Автор: voffka1984
Дата сообщения: 10.06.2008 09:01
подскажите пожалуйста скрипт, которым можно прописать сетевые принтеры!
чтобы можно было его добавить в GPO на пользователей и он им автоматом подрубал принтеры.
Автор: rosalin
Дата сообщения: 10.06.2008 10:07
Ребята подскажите какой лучше скриптик что бы при выходе из домена запускалась программа допустип spoolercleaner.exe -all и где файл spoolercleaner.exe лучше расположить.....
Автор: 4aplin
Дата сообщения: 10.06.2008 10:31
помогите, пожалуйста, добить код...

Цитата:
@echo off
setlocal
for /f "tokens=5 delims=:" %%i in ('FINDSTR /I "Status:" log.txt') do set aaa=%%i
if NOT %aaa%==OPTIMAL (
sendmail -t < warning.mail
ECHO WARNING %date% %TIME:~0,8%>>\\Computer\report$\alertlog.txt
) else (
ECHO OK %date% %TIME:~0,8%>>\\Computer\report$\alertlog.txt
)
pause


Если процессы в системный лог пишут ошибку, тогда вызов blat(sendmail), весится на команду eventtriggers и отправляет сообщение о том, какой сервис полетел
Автор: aleksanchez
Дата сообщения: 10.06.2008 10:36
voffka1984

Код: Set WshNetwork = WScript.CreateObject("WScript.Network")
WshNetwork.AddWindowsPrinterConnection "\\192.168.0.1\hplj1320"
Автор: rosalin
Дата сообщения: 10.06.2008 11:34

Цитата:
Set WshNetwork = WScript.CreateObject("WScript.Network")
WshNetwork.AddWindowsPrinterConnection "\\192.168.0.1\hplj1320"

а если несколько .....

и можно подсказать по моему вопросику плиз


Цитата:
подскажите какой лучше скриптик что бы при выходе из домена запускалась программа допустип spoolercleaner.exe -all и где файл spoolercleaner.exe лучше расположить.....

Автор: voffka1984
Дата сообщения: 10.06.2008 12:50
aleksanchez , спасибо. а как его ещё и сделать по умолчанию?!
и можно ли перед этим удалить все принтеры которые уже есть?!
Автор: niichavo
Дата сообщения: 10.06.2008 15:54
voffka1984
рой в сторону "управление печатью" - "развернуть с помощью групповой политики". PushPrinterConnections.exe - в GPO в сценарии автозагрузки компа/юзера
Автор: aleksanchez
Дата сообщения: 10.06.2008 20:29
А несколько будет вот так:

Код: Set WshNetwork = WScript.CreateObject("WScript.Network")
WshNetwork.AddWindowsPrinterConnection "\\192.168.0.1\hplj1320"
WshNetwork.AddWindowsPrinterConnection "\\192.168.0.1\hplj1110"
WshNetwork.AddWindowsPrinterConnection "\\192.168.0.1\hplj"
WshNetwork.AddWindowsPrinterConnection "\\192.168.0.1\hplj13"
'Устанавливаем по умолчанию принтер
WshNetwork.SetDefaultPrinter ("\\192.168.0.1\hplj1320")
Автор: Real Root
Дата сообщения: 10.06.2008 20:51
YNY
НЕТ,
1) Юзеры могут права поменять.
2) От прочтения тоже нужно защитить, т.к. его можно скопировать.
Когда я говорил о защите от изменения, это чтоб потом не могли к дургой ситуации применять - поэтому нужно минимальное шифрование, ибо люди там без базового образования.

4aplin
Я что-то так и не понял что тебе нужно, но для начала посоветовал бы имена переменным давать с некоторым смыслом.

Цитата:
if NOT %aaa%==OPTIMAL

Да, и как я понял переменная %aaa% принимает строковое значение (String), и ты хочешь проверить, не равно ли оно OPTIMAL. Если да, то сравнение производиться так:
if NOT "%aaa%"=="OPTIMAL"

Еще совет, лучше используй отложенное разъименование команд
Во-первых, переменные будут подставляться немедленно, а во-вторых повыситься удобочитаемость скриптов (будет хорошо видно переданные скрипту параметры):
Вот пример:
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
IF NOT "!aaa!"=="OPTIMAL"
Автор: rosalin
Дата сообщения: 11.06.2008 08:00
aleksanchez
Вот спасибо выручил
Автор: Real Root
Дата сообщения: 12.06.2008 22:24
Подскажите пожалуйста, как в VBS скрипте узнать путь к папке Program Files?
Мне нужно в скрипте проверять наличие определенной папки Folder в папке Program Files
Я это делаю так:
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
If (fso.FolderExists("C:\Program Files\Folder\")) Then ...
Все прекрасно работает. Но, нужна универсальность.
Т.е. желательно бы вместо C:\Program Files\ использовать %programfiles% - но такой способ в fso.FolderExists не работает. Нужен обходной путь.

Я пытался создать переменную Folder и впихнуть туда путь к папке Program Files, но метод GetSpecialFolder не может возвращать путь к Program Files (хотя, может и может - но я не знаю)
Вот пример:
Folder = Folder.GetSpecialFolder(0) - возвращает C:\Windows
1 - SystemFolder
2 - Temp Folder

Вобщем нужен способ узнать путь к Program Files
Автор: ManBot
Дата сообщения: 12.06.2008 23:18
Привет коллеги!
Есть задача: забывчивые "маму иху" юзвери забывают выходить из 1С-ки.
Я написал простенький скрипт по убийству процесса 1Cv7(бла-бла-бла).exe

Как мне его прописать на всех компах домена, чтобы он отрабатывался, скажем в 22-25 (за 5 минут до начала бэкапа)?

Или предложите рабочее решение... V7Backup - не совсем стабильно работает... уж и не знаю почему - но архивация часто сбивается и просто не делается архив.

Вобщем, бумаю вопрос озвучи и общую мысль обрисовал...

"Бен! Бен! Это Данила!!! Ай.. Нид... Хелп!!!" (c)
Автор: Vby
Дата сообщения: 12.06.2008 23:34
Real Root
Можно так:
Set WshShell = CreateObject("WScript.Shell")
ProgramFiles = WshShell.ExpandEnvironmentStrings("%ProgramFiles%")

Вместо ProgramFiles можно использовать любую переменную среды окружения
Список досупных переменных можно посмотреть выполнив команlу Set (Пуск - Выполнить - CMD - Set)
Автор: Refugee
Дата сообщения: 12.06.2008 23:45
Real Root
Set WshShell = WScript.CreateObject("WScript.Shell")
Set WshSysEnv = WshShell.Environment("PROCESS")
WScript.Echo WshSysEnv("ProgramFiles")


Автор: Vby
Дата сообщения: 12.06.2008 23:48
ManBot
Как вариант выполнить команду:
at \\comp_name 22:25 /every:M,T,W,Th,F \\server\share\kill_1c.bat

Находишь список всех компов в домене и вместо \\comp_name подставляешь нужные компы, либо в логон через ГПО нужным компам

at 22:25 /every:M,T,W,Th,F \\server\share\kill_1c.bat

но нужно делать проверку, если есть задача - не выполнять, а то задублируются
Автор: YNY
Дата сообщения: 13.06.2008 15:55
Real Root
Юзеры могут права поменять.ибо люди там без базового образования.
-- 2 противоречивых пояснения,
-- ранее на форуме я говорил, что для скрытия текста скрипта мона использовать потоки NTFS 5

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

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


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