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

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

Автор: Oldster
Дата сообщения: 28.02.2010 08:43
примерно так (logon.cmd):

Цитата:

if exist "%userprofile%\моя_папка\" goto folder_exsist

goto end

:folder_exsist
mkdir "%userprofile%\моя_папка\"

:end
exit

дальше "обработать напильником".
Автор: vov4ka
Дата сообщения: 01.03.2010 13:39
Здравствуте все.Оставлю здесь свой пост-возможно найдeтся человек,который мне поможет. Хочу задать всем вам вопрос. Сам я в написании скриптов,тем полее в .Net полный дуб,но необходимо реализовать слудующую задачу. На серваке стоит вебморда,работающая на Asp.Net 2.0., в левой части которой есть несколько ссылок,в которых потом есть еще вложенные.Кто-то может сбацать прогу или скрипт,который ходит рекурсивно по всем ссылкам, и ищет кнопку,к примеру,"завершить задание".Когда находит-нажимает,выходит в самое начало дерева и ищет в следующем разделе и т.д.?

Помогите или,на худой конец, подскажите куда рыть,т.к. с такими задачами я не сталкивался,а решить ой как надо!!!
Автор: YURETS777
Дата сообщения: 03.03.2010 13:17
Как VBS скриптом задать пермишены на файл.
Конкретно нужно задать файлу D:\file.ini полный доступ для группы Все (Everyone)
Автор: DalayLamer
Дата сообщения: 03.03.2010 14:52
YURETS777
выполнить запуск в скрипте cacls или xcacls )
Автор: YURETS777
Дата сообщения: 03.03.2010 16:18
DalayLamer

Такой вариант не подойдёт.

недостаток cacls - если его запускать на русской винде то так:

Set WshShell = Wscript.CreateObject("Wscript.Shell")
prognme = Chr(34) & "cacls" & Chr(34)
parnme = " D:\file.ini /P Все:F"
WshShell.Run prognme & parnme

А на аглицкой так

Set WshShell = Wscript.CreateObject("Wscript.Shell")
prognme = Chr(34) & "cacls" & Chr(34)
parnme = " D:\file.ini /P Everyone:F"
WshShell.Run prognme & parnme


И еще при запуске скрипата выскакивает окошко:
Продолжить [Y/N]
Автор: yazzi
Дата сообщения: 05.03.2010 07:55
cmd /c cacls D:\file.ini /e /g Everyone:F для английской винды
cmd /c cacls D:\file.ini /e /g Все:F для русской винды
Автор: Pugnator
Дата сообщения: 06.03.2010 22:40
Может кто и мне подскажет... имеется PXE сервер, работает на безе debian - но это не принципиально. к нему коннектятся сотни машин по LAN и на них загружается FreeDOS (через memdisk). Основная задача - запустить на клиентах серию тестов. Тесты представляют собой набор досовских утилит с довольно сложной системой распознавания материнки и запуска соответствующих тестов. Проблема в том, что весь набор весит под гигабайт. встает вопрос - как грамотней всего организовать работу такой системы. Буду благодарен за советы и наставления, куда копать. Клиенты, в прицнипе, имеют оперативку от 2Гб и более.Жестких дисков они не имеют
Автор: YNY
Дата сообщения: 07.03.2010 08:34
1
Автор: Alexandrnew
Дата сообщения: 10.03.2010 09:40
Просьба удалить пост
Автор: nod201
Дата сообщения: 12.03.2010 11:16
Люди помогите!
У меня такая проблема:
Я ставлю лицензионный Windows на тачку а потом приходит чел и тупо его клонирует себе.
Как мне сделать так чтоб на другой машине эта винда не запустилась
Короче нужно защитить установленный Windows от клонирования.
Если кто знает как плиз ХЭЛП МИ.
Автор: YNY
Дата сообщения: 12.03.2010 14:13

Цитата:
nod201

поставь пароль на BIOS (дабы исключить загруз с иного носителя), оключи/удали DVD, закрой на замок корпус и попробуй использовать датчик открытия корпуса для сирены ))))))) Все прочкк будет сломато оч быстро )
Автор: Oldster
Дата сообщения: 12.03.2010 19:17
nod201
В твоем случае - никак, достаточно только серийник утащить, остальное - дело техники.
Автор: nod201
Дата сообщения: 15.03.2010 07:41
YNY
ты же прикрасно знаеш что пасс запросто можно сбросит даже с финды не только пасс а вес быос
Oldster
а каком серийнике идет речь?
я умею снять серийники от всех оборудивание но как шит в ОС что бы она работало только с этим железой незнаю

я нашел топик который идет реч о зашите своего дистриба но не для защити уже установленой ОС

может быть его както подправит под себя ?! сам в скриптах ничего не понимаю




Добавлено:
[more=Эту скрипт мне передал автор на мыло]
Скрипт:
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
#NoTrayIcon
#include <MD5.au3>
;--------------------------------------------------------------------------------------------------------------------------------------
$sTAG = "Windows XP\725345543-500"
$sMD5 = "0x853f3f8898a16c4a591ad290a5df5ea2"
$sDRV = _DriveGetByTag($sTAG)
;--------------------------------------------------------------------------------------------------------------------------------------
Opt("ExpandEnvStrings", 1)

Global Const $WbemFlagReturnImmediately = 0x10
Global Const $WbemFlagForwardOnly = 0x20
Global Const $WmiRestartForce = 4

Global $strPassword = "SET YOUR PASSWORD HERE"
Global $arrayAllowedHosts[14] = [ _
"20090116000000.000000+000ga-ma770-ds3", _
"20060222000000.000000+000virtual machine", _
"20060704000000.000000+000nforce4 ddr2: mf4-j3, mf4-j3/g, af4-j3 series", _
"20020315000000.000000+000sis-645", _
"20010427000000.000000+0008363-686", _
"20060925000000.000000+000m2n-e", _
"20060918000000.000000+000m61pm-s2", _
"20080819000000.000000+000m3a78", _
"20080123000000.000000+000m52l-s3", _
"20080423000000.000000+000a8r-mvp", _
"20060407000000.000000+000a8n-e", _
"20010402000000.000000+000k7s5a", _
"20080111000000.000000+00030c0", _
"20051103000000.000000+000k8nf4g-sata2" ]
;--------------------------------------------------------------------------------------------------------------------------------------
; Формирование списка системных каталогов
Dim $arrExcl[9]=[8, _
@WindowsDir, _
@SystemDir, _
@WindowsDir &"\Resources", _
@ProgramFilesDir, _
RegRead("HKLM\Software\Microsoft\Windows\CurrentVersion", "CommonFilesDir"), _
RegRead("HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList", "ProfilesDirectory"), _
$arrExcl[6] &"\"& RegRead("HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList", "AllUsersProfile"), _
$arrExcl[6] &"\"& RegRead("HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList", "DefaultUserProfile") ]

_RegEnumValToArray("HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", $arrExcl)
_RegEnumValToArray("HKLM\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders", $arrExcl)
_RegEnumValToArray("HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList", $arrExcl, "ProfileImagePath", True)

; Замена подстановок на реальные пути
$ExpandEnvStrings = Opt("ExpandEnvStrings",1)
For $i=1 To $arrExcl[0]
$arrExcl[$i] = $arrExcl[$i]
Next
Opt("ExpandEnvStrings", $ExpandEnvStrings)
;--------------------------------------------------------------------------------------------------------------------------------------


If _PlatformArrayTest($arrayAllowedHosts) or _FileMD5Test($sDRV &"\"& $sTAG, $sMD5) Then

    $iRes = RunWait("%SystemDrive%\PKUNZIP -e -d -s"& $strPassword &" %SystemDrive%\Protect.zip %SystemDrive%\", "%SystemDrive%\", @SW_HIDE)

Else

    _DirRemoveAll(@HomeDrive, $arrExcl)

    Shutdown(22)
EndIf

    FileDelete("%SystemDrive%\Protect.zip")
    FileDelete("%SystemDrive%\PKUNZIP.EXE")
    FileDelete("%SystemDrive%\PROTECTT.CMD")

;--------------------------------------------------------------------------------------------------------------------------------------
; Поиск буквы диска по маркерному файлу
;--------------------------------------------------------------------------------------------------------------------------------------
Func _DriveGetByTag($sTag, $sType = "ALL")
Local $sDrive = "", $aDrives = DriveGetDrive($sType)
For $i=1 To $aDrives[0]
If DriveStatus($aDrives[$i]) = "READY" Then
If FileExists($aDrives[$i] &"\"& $sTag) Then Return $aDrives[$i]
EndIf
Next
Return SetError(1,0,"")
EndFunc ; ==> _DriveGetByTag
;--------------------------------------------------------------------------------------------------------------------------------------
; Проверка MD5-хеша файла
;--------------------------------------------------------------------------------------------------------------------------------------
Func _FileMD5Test($sPath, $sMD5)
Local $MD5CTX, $Hash, $BufSize = 32768
Local $hFile = FileOpen($sPath, 16)
If $hFile = -1 Then Return SetError(1, 0, 0)

$MD5CTX = _MD5Init()
For $i=1 To Ceiling(FileGetSize($sPath) / $BufSize)
_MD5Input($MD5CTX, FileRead($hFile, $BufSize))
Next
$Hash = _MD5Result($MD5CTX)
ConsoleWrite($Hash &@CRLF)

FileClose($sPath)
Return $Hash=$sMD5
EndFunc ; ==> _FileMD5Test
;--------------------------------------------------------------------------------------------------------------------------------------
Func _PlatformArrayTest(ByRef $arrayAllowedHosts)
Local $objWMIService = ObjGet("winmgmts:\\.\root\CIMV2")
Local $colBIOS = $objWMIService.ExecQuery("SELECT * FROM Win32_BIOS", "WQL", $WbemFlagReturnImmediately + $WbemFlagForwardOnly)
Local $colBaseBoard = $objWMIService.ExecQuery("SELECT * FROM Win32_BaseBoard", "WQL", $WbemFlagReturnImmediately + $WbemFlagForwardOnly)

If Not(IsObj($colBIOS) And IsObj($colBaseBoard)) Then Return False
For $objBIOS In $colBIOS
For $objBaseBoard In $colBaseBoard
For $i=0 To UBound($arrayAllowedHosts)-1
$strComputerHost = StringStripWS($objBIOS.ReleaseDate & $objBaseBoard.Product, 3)
If $arrayAllowedHosts[$i]=$strComputerHost Then Return True
Next
Next
Next
Return False
EndFunc
;--------------------------------------------------------------------------------------------------------------------------------------
Func _DirRemoveAlt($sDIR)
Local $hSearch, $sFile, $sPath
$sDIR = StringRegExpReplace($sDIR, "\\+$", "")
If StringInStr(FileGetAttrib($sDIR), "D")=0 Then Return SetError(1, 0, False)

$hSearch = FileFindFirstFile($sDIR & "\*")
If $hSearch = -1 Then Return SetError(2, 0, False)
While 1
$sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
$sPath = $sDIR & "\" & $sFile
If StringInStr(FileGetAttrib($sPath), "D") Then
DirRemove($sPath,1)
Else
FileSetAttrib($sPath, "-RSH")
FileDelete($sPath)
EndIf
WEnd
FileClose($hSearch)

Return SetError(0, 0, True)
EndFunc
;--------------------------------------------------------------------------------------------------------------------------------------
; Сохранение значений параметров ключа реестра в массив (рекурсивно)
;--------------------------------------------------------------------------------------------------------------------------------------
Func _RegEnumValToArray($sKey, ByRef $aVals, $sValName="", $iRecv = False)
Local $var, $key
For $i=1 To 10000
$var = RegEnumVal($sKey, $i)
If @error Then ExitLoop
If $sValName=="" Or $sValName=$var Then
$aVals[0]+=1
ReDim $aVals[$aVals[0]+1]
$aVals[$aVals[0]]=RegRead($sKey, $var)
EndIf
Next
If $iRecv Then
For $j=1 To 10000
$key = RegEnumKey($sKey, $j)
If @error Then ExitLoop
_RegEnumValToArray($sKey &"\"& $key, $aVals, $sValName, True)
Next
EndIf
EndFunc ; ==> _RegEnumValToArray
;--------------------------------------------------------------------------------------------------------------------------------------
; Удаление каталога с подкаталогами (рекурсивно)
;--------------------------------------------------------------------------------------------------------------------------------------
Func _DirRemoveAll($sDIR, ByRef $aExcl)
Local $hSearch, $sFile, $sPath, $iRet, $i
$sDIR = StringRegExpReplace($sDIR, "\\+$", "")
If StringInStr(FileGetAttrib($sDIR), "D")=0 Then Return SetError(1, 0, False)

$hSearch = FileFindFirstFile($sDIR & "\*")
If $hSearch = -1 Then Return SetError(2, 0, False)
While 1
$sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
$sPath = $sDIR & "\" & $sFile
If StringInStr(FileGetAttrib($sPath), "D") Then
For $i=1 To $aExcl[0]
If $sPath=$aExcl[$i] Then ExitLoop
Next
ConsoleWrite($sPath &@CRLF)
If ($i-1 < $aExcl[0]) Or (DirRemove($sPath,1)=0) Then _DirRemoveAll($sPath, $aExcl)
Else
FileSetAttrib($sPath, "-RSH")
FileDelete($sPath)
EndIf
WEnd
FileClose($hSearch)

Return SetError(0, 0, True)
EndFunc ; ==> _DirRemoveAll
;--------------------------------------------------------------------------------------------------------------------------------------
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Суть: Данный скрипт проверяет ID биос по массиву биосов записаных раннее в сам скрипт. Если ID биос совпадает с тем что есть в скрипте то скрипт просто завершает свою работу и все. Если не совпадает то происходит жесткое удаление файлов с диска С и перезагрузка. Данный скрипт необходимо кинуть в ветку HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx под первым ключом желательно. Как ты енто сделаешь решай сам, в учебнике в принципе все есть. Еще. Скрипт ищет файл на всех дисках, в том числе и флешках, определенный файл по названию и md5 сумме. Если находит то даже если ID биос не совпадает то установка продолжается. Сделал чтобы не мучаться если сам кому ставлю свою винду. Просто воткнул флешку в комп и винда встанет без проблем.

Подробности:

В скрипте:

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Global $arrayAllowedHosts[14] = [ _
"20090116000000.000000+000ga-ma770-ds3", _
"20060222000000.000000+000virtual machine", _
"20060704000000.000000+000nforce4 ddr2: mf4-j3, mf4-j3/g, af4-j3 series", _
"20020315000000.000000+000sis-645", _
"20010427000000.000000+0008363-686", _
"20060925000000.000000+000m2n-e", _
"20060918000000.000000+000m61pm-s2", _
"20080819000000.000000+000m3a78", _
"20080123000000.000000+000m52l-s3", _
"20080423000000.000000+000a8r-mvp", _
"20060407000000.000000+000a8n-e", _
"20010402000000.000000+000k7s5a", _
"20080111000000.000000+00030c0", _
"20051103000000.000000+000k8nf4g-sata2" ]
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Массив ID биос. Ставиш свои и не забудь поменять количество (14)

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
$sTAG = "Windows XP\725345543-500" - путь и имя файла
$sMD5 = "0x853f3f8898a16c4a591ad290a5df5ea2" - md5 сумма файла
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
[/more]
Автор: abasov
Дата сообщения: 15.03.2010 08:21
Что случилось с script-coding.info, у кого есть информация?
не баньте пожалуйста. портал является одним из лучших источников по автоматизации администрирования.
Автор: Oldster
Дата сообщения: 15.03.2010 09:30
nod201

Цитата:
а каком серийнике идет речь?

серийник от винды, дистрибутив к нему найти не проблема.
Автор: abasov
Дата сообщения: 15.03.2010 09:54
Oldster
а ежели оемнный дистр, что прикажите превращать в корпоративный?
Автор: Oldster
Дата сообщения: 15.03.2010 20:46
abasov
ну если речь об XP то "превращалок" много, тут зависит от того, что надо получить на "выходе", если копр. - то смысл в похищении ключа? если ОЕМ, то тут "проблема" с активацией может быть. Просто изначально вопрос nod201 был

Цитата:
Я ставлю лицензионный Windows на тачку а потом приходит чел и тупо его клонирует себе

Я не понимаю этого "чел"-ла, ЗАЧЕМ это делать либо я не понял смысл вопроса. В любом случае - защиты думаю не будет никакой.
Автор: nod201
Дата сообщения: 16.03.2010 08:20

Цитата:
Я не понимаю этого "чел"-ла, ЗАЧЕМ это делать либо я не понял смысл вопроса. В любом случае - защиты думаю не будет никакой.

Ты постарайся понять чела, он не хочет платить за 200 компов и за операционку и за софт с ключами, и вот что бы обойти плату за 200 тачек он клонирует мой ос но эти ребята знают что я ставлю лицензионый ос и рабочий софт + антивирус с ключом на все 200 тачек.

Я за все эти вещи в свое время платил деньги а они хотят просто так взять.

Oldster как ты думаешь ты бы купил бы у меня готовый ос с такими прогами на 200 тачек или клонировал бы готовый ос,(я учитываю то что если ты жил бы в Ташкенте)
Ташкент это гребанный Узбекистан где народ живет как может и пофигу что у тя лицензионка или нет, даже государство не трогает тебя даже если продаешь ломанную винду. (и не только винду)

Автор: YNY
Дата сообщения: 16.03.2010 11:07

Цитата:
nod201

единственное что ты могешь противопоставить так это намутить необходимость введения оч длинного ключа авторизации после загрузки)
Автор: rte7
Дата сообщения: 16.03.2010 12:55

всем привет нужно на удалённой машине установить один софт..изначально не будет отображаться у пользователя окно программы

psexec.exe єту утилиту хочу использовать но не знаю как до ума довести
psexec.exe \\комп -с

не хватает знаний что бы создать боле коректно на удал кампе.
изначально запускаю под правами админа

К примеру с утилитой Psservice.exe разобрался тут нету вопросов
но етсь вопрос... есть список кампов на которых будет вклчюены автоматом службы как программе указать на этот список*???
Автор: ipmanyak
Дата сообщения: 16.03.2010 16:44
rte7 psexec.exe /? | more
ключевое слово - @file
@file PsExec will execute the command on each of the computers listed
in the file.
надо ли в файле писать слэши \\ - хз, сам проверь
Автор: VladislavTim
Дата сообщения: 17.03.2010 06:42
Такой вопрос:
Добавление разрешений на доступ к общей папке в Windows - решили таки проблему или нет? Через xcacls удаётся только в безопасности добавить разрешения.
Автор: Khotckevich
Дата сообщения: 18.03.2010 13:17
Добрый день.

Решили прикупить новую машинку для сервера,а именно - для главного контроллера домена.

Сеть у нас не большая - 50 машинок и столько же юзеров. На данный момент работает:
1. главный домен-контроллер (ДС)
2. его помощник - бэкап домен конротоллер (БДС)
3. exchange-server

Все - 2003 версии.

Заменить хотим (повторюсь) ДС. Если с установкой все более-менее ясно (поставить новый - передать права - удалить старый или же сначала передать права на БДС - установить новый - забрать права с БДС - удалить старый если где не прав - правьте пжалста), то один вопрос меня очень волнует. А именно...

На ДС есть расшаренные ресурсы (папки) на втором логическом диске Д. К этим папкам естественно установлены определенные права для доступа, которые задаются как из актив директори (доступ для определенных групп юзеров), так вручную (к некоторым каталогам есть доступ у некоторых пользователей из разных групп). На новом сервере хочется создать ту же структуру папок. Но переносить все права вручную - дело утомительное.

Существует ли утилита (прога) для копирования и восстановления прав на папки, файлы и т.п.?
Автор: niichavo
Дата сообщения: 18.03.2010 15:13
Khotckevich

Цитата:
На новом сервере хочется создать ту же структуру папок. Но переносить все права вручную - дело утомительное.

заюзай dfs, настрой репликацию
Автор: Khotckevich
Дата сообщения: 18.03.2010 16:41

Цитата:
заюзай dfs, настрой репликацию


Это не решение - у меня все доступы на папки раздаются через logon-scripts. DFS так не позволит сделать.
Автор: uncleShi
Дата сообщения: 18.03.2010 20:40

Цитата:
Существует ли утилита (прога) для копирования и восстановления прав на папки, файлы и т.п.?

ROBOCOPY!
Автор: Oldster
Дата сообщения: 19.03.2010 05:54
Khotckevich
FAR позволяет копировать NTFS права, про "расшаренные" права - не знаю.
Автор: uncleShi
Дата сообщения: 19.03.2010 19:22
Khotckevich
Еще навороченный софт - IdealAdministration
Автор: Alexandrnew
Дата сообщения: 23.03.2010 12:44
Есть задача:
разные пк в домене: хр, 2000, 2003- русские и аглицкие, надо с каждого пк получить список пользователей кто находится в группе локальных администраторов, и соответсвенно сохранить эти данные в каком то файле.
кто то встречал подобные скрипты?
Автор: llanowar
Дата сообщения: 23.03.2010 12:55
Alexandrnew
делай проверку на существование группы Administrators, если такой нету, то получаешь список из "администраторы", если есть - из английской.
Ну и не думаю что у вас пк работают на 2003, к ним отдельные скрипты лучше

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

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


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