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

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

Автор: Real Root
Дата сообщения: 13.06.2008 18:44
YNY

Цитата:
Юзеры могут права поменять.ибо люди там без базового образования.
-- 2 противоречивых пояснения

Ну, понимашь ли, тут особенно безграмотные люди. Поэтому, изучая все методом тыка, про NTFS права они знать могут. А изучать все методом тыка - для этого у них времени дофига. А вот про написание даже очень простого цикла - они не знают ничего. Более того, они и прочесть то не смогут про это нигде, т.к. на их родном языке нет подобной литературы. Русский, как правило знают плохо.
Остается лишь опасаться особо пытливых людей, которые методом тыка начнут изменять тело скрипта на свое (запуск программ в скрытых окнах, sendkeys и т.д.) - вот для этого мне и нужно примитивно пошифровать его.

ALL Вопрос по шифрованию уже снят. Скрипты не работали потому, что вместо бесплатного ActivePerl, я с варезника качнул ActivePerl Dev kit - ну ньюб я еще в этом всем. Потом, на следующий день догнал, что что0то не то я скачал если скачать нормальный перл, то все скрипты прекрасно работают.

YNY

Цитата:
-- ранее на форуме я говорил, что для скрытия текста скрипта мона использовать потоки NTFS 5

Это замечательная идея!
Вот только где можно почитать, как осуществлять доступ к потокам NTFS из командной строки, другого скрипта, ярлыка и т.д. Помниться, у меня гдето был код на С++ для работы с потоками. Но потом я про него забыл, и он помоему благополучно посеялся. И если честно, то не совсем понял, можно ли вобще получить номера всех существующих потоков, кроме как перебрав их все циклом.
Автор: YNY
Дата сообщения: 14.06.2008 13:34

Цитата:
Real Root

1- права на чтение не предпологают изменение файла или прав на доступ к нему, а только его возможное копирование через буфер обмена
2- я имел в виду именованные потоки в NTFS для файлов, а про что ты гришь - не нимать
где можно почитать, да ранее на этом форуме
Автор: slech
Дата сообщения: 14.06.2008 14:15
всем привет. подкажите пожалйста как запустить скриптик который копирует прсото файлы по сети из под аккаунта не административного ?
может где в политиках или настройках DCOM ?

спасибо.
Автор: Real Root
Дата сообщения: 14.06.2008 15:20
YNY
Что мешает человеку:
а) Стать владельцем файла
б) Скопировать сам файл в другое место, изменить его и запустить.

Про потоки почитаю, идея хорошая.
Автор: YNY
Дата сообщения: 15.06.2008 15:39

Цитата:
Real Root
Стать владельцем файла -- интересно, а как ты думаешь нах ваще права на файлы и папки даются если, по твоему, любой владельцем может стать???
Владельцем может стать тока чел из гр админов на том компе где шара, остальные просто бреЮТСЯ !!!!!




Добавлено:
если конечно у гр ВСЕ нет полного доступа к шарным паке или файлам, а есть тока доступ на чтение!!!!!!!!!
Автор: Real Root
Дата сообщения: 15.06.2008 18:24
YNY
Честно говоря, я не понимаю, причем тут шары и прочее.
Скрипт лежит на локальном компе, запускается пользователем по мере необходимости. Внутри скрипта есть защита от распространения на другие компы, путем привязки к установленной ОС. Все очень просто.

P.S. Скрипт служит для перезапуска и сброса настроек контроллера гозопереробатывающей станции.
Автор: ManBot
Дата сообщения: 15.06.2008 22:25

Цитата:
Vby

Спс.. Буду пробовать.
Автор: YNY
Дата сообщения: 16.06.2008 11:44

Цитата:
Real Root

Цитата:
путем привязки к установленной ОС

Вопрос:
интересно и как это реализовано
Ответ по правам: такое впечатление что ты либо в досе, либо в 98 окнах раз такие непонятки с правами ))))))))))))0
Автор: Real Root
Дата сообщения: 16.06.2008 13:47
YNY

Цитата:
интересно и как это реализовано

неужели совсем фантазии нет? Да можно штук 50 способов придумать, как привязать конкретный скрипт к конкретной ОС или даже железу.
Самой простой способ привязка к структуре каталогов или записи в реестре. Из более сложных - привязка к GUID сетевого интерфейса, к S/N HDD.


Цитата:
Ответ по правам: такое впечатление что ты либо в досе, либо в 98 окнах раз такие непонятки с правами ))))))))))))0

У меня же наоборот такое впечатление, что ты в NT системах не работал.
Объясни же мне тогда, как локальному админу запретить доступ к файлу, чтоб он не смог вернуть себе права на него Да, и как я уже заметил, прочтения исходного текста в скрипте будет достаточно для "провала операции".

И кстати, причем все-таки шары, упомянутые тобой в предыдущем посте. Там вобще сети нет если что.
Автор: YNY
Дата сообщения: 17.06.2008 09:17

Цитата:
Real Root

обычно, у 80% админов, скрипты лежат на их машине/на серваке, там только доступ на чтение и по политикам или еще как назначено кому и когда какой скрипт цеплять.
с локальным админом конечно тяжко тягаться, но если у тя домен и у тя права доменного админа, то иск-в лок-го из пермиссий на папку/файл мона затруднить ему жизнь, чтоб все было гут и исп сетевые папки для скриптов.


Цитата:
конкретный скрипт к конкретной ОС или даже железу.
-- лишний код, обычно в 80% наоборот нада чтоб везде работало
что ты поним под "к конкретной ОС " лучше пиши в личку, а то оффтоп
Автор: Real Root
Дата сообщения: 17.06.2008 18:21


Цитата:
обычно, у 80% админов, скрипты лежат на их машине/на серваке...

Очень рад, что хотябы 80% админов живут как люди. А вот у меня условия такие, что есть около 15 компов - управлящие различными агрегатами, за которыми в качестве операторов сидят "мартышки". Компы, управляющие агрегатами слабые, на некоторых 98-я винда. Я бы с удовольствием все необхордимое на C# бы накатал, да вот беда, оперы на компах 96-128 метров . Сам представь что быдет с приложением .NET на таком компе.
Да, самое главное, что территориально, компы расположены в радиусе километров в 500. Да и ездить туда... да что ездить, даже по телефону объяснять что и как - очень напряжно. Коммуникаций нет никаких впринципе. Даже GPRS у местных ОпСоСов в этой области нет. Поэтому и было решено автоматизировать устранение неисправностей, благо при тщательном анализе это вполне возможно. А защита от распространения нужна лишь для того, что мое начальство желает все и вся за 300 баксов. Вот уеду я к вам в Россию, и пусть здесь все нарен наркывается медным тазом... Кстати, часовой простой агрегата измеряется тысячами баксов (нефть, газ и все такое).
Автор: cluster
Дата сообщения: 17.06.2008 22:09
Я извиняюсь, мой вопрос к администрированию мало относится, но не знаю, в какой теме лучше задать.
Нужен скрипт на vbs или wsh, при запуске которого будет всплывать окошко с сообщением <время работы Windows в часах> и <время работы Windows в днях +часах>
Автор: Refugee
Дата сообщения: 17.06.2008 23:48
cluster
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")

Set colOperatingSystems = objWMIService.ExecQuery ("Select * From Win32_PerfFormattedData_PerfOS_System")

For Each objOS in colOperatingSystems
hUptime = Int(objOS.SystemUpTime / 3600)
dUptime = Int(hUptime/24)
hUptime = hUptime-dUptime*24

s = "Uptime "
if dUptime <> 0 then s=s & dUptime & " days "
s = s & hUptime & " hours"

msgbox s
Next

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

Цитата:
Real Root

Цитата:
все и вся за 300 баксов
я надеюсь в день, при таких та расстояниях? ты знаешь у нас тут, кроме Москвы, это ниже средней зарплата, расстояния хоть и не такие, но гемора не меньше

Автор: Real Root
Дата сообщения: 18.06.2008 20:37
YNY

Цитата:
я надеюсь в день, при таких та расстояниях? ты знаешь у нас тут, кроме Москвы, это ниже средней зарплата, расстояния хоть и не такие, но гемора не меньше

Нет, это в месяц. Нашли лоха, да? А вобще у нас тут это очень даже хорошая з/п. Ср. зар. плата у нас тут 150 у.е. Да и я не каждый день туда-сюда мотаюсь. Если совсем жопа - то еду, но это редко. Хотя, я просто более менее все автоматизировал. А вобще, там на каждый такой агрегат по 2 спеца должно имется, которые там должны сидеть по очереди. З.п. у них должна быть по 100 у.е. Я честно говоря до сих пор понять не могу, каким методом до этого все работало.

Подскажите, как можно получить путь к папке Мои докумнты.
Проблема в том, что на некоторых компах, папка Мои документы перенесана из %userprofile% на диск D. А для папки Мои документы переменную %***% что-то не припомню.

Добавлено:
Пока что придумал вот такой способ:
DocumentsDir = WshShell.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Personal")

Добавлено:
Да, и еще вопрос, пока что чисто из спортивного интереса. Есть ли возможност при помощи VBScript менять права на файлы и папки NTFS. И есть ли возможность делать тоже самое с параметрами и ключами реестра.
Впринципе, подойдет даже с помощью внешних библиотек.
Автор: Refugee
Дата сообщения: 18.06.2008 22:44
Real Root
еще можно так:
set s=CreateObject("Shell.Application")
dir=s.NameSpace(5).self.path
впрочем, прямо через реестр лучше

права на файлы можно менять через WMI, класс Win32_LogicalFileSecuritySetting, а на файлы/ключи реестра через объект ADsSecurityUtility
Автор: hotch
Дата сообщения: 23.06.2008 16:57
А кто-нибудь сталкивался с необходимостью вытащить в отдельный контейнер компьютеры из определенной подсети???
Компов много, порядка 2000, все в домене, из них надо вынуть все, которые логинятся в определенной подсети. Переместить их в отдельный OU. Логи логонов есть. В текстовом файле и в mdb.
Руками осилил штук 20 %)
Спасите-помогите
Автор: aleksanchez
Дата сообщения: 24.06.2008 13:14
hotch
Попробуй вот так


Код: Const ForReading = 1
Dim fso
Set fso = CreateObject("scripting.filesystemobject")
Set input = fso.OpenTextFile("c:\names.txt",ForReading)
Set objNewOU = GetObject("LDAP://OU=Finance,DC=fabrikam,DC=com")
Do Until objTextFile.AtEndOfStream
CompName = objTextFile.Readline

Set objMoveComputer = objNewOU.MoveHere _
("LDAP://CN=" & CompName & ",CN=Computers,DC=fabrikam,DC=com", "CN=" & CompName)
Loop
Автор: Real Root
Дата сообщения: 24.06.2008 17:25
Подскажите, есть ли альтернативные методы копирования файлов. Т.е. не используя объект Scripting.FileSystemObject.
Честно говоря копирование методом CopyFile (объекта Scripting.FileSystemObject) примитивное до нельзя. Путь к файлу должен существовать, у файла не должно быть запрещающих атрибутов и т.д. Конечно можно написать процедцрку, разгребающую все эти подводные файлы. Но, на это уйдет прилично времени, и код скрипта распухнет донельзя, что не есть оптимально

Сейчас для копирования файлов использую Wscript.Run XCOPY bla bla bla, 0 - намного проще и разумнее. Но тут тоже есть своя запарка, а именно запрос является ли адрес назначения файлом или каталогом. Пока что мне нужно перезаписывать существующий файл, и это терпимо, но если файла нет - то облом.
Автор: YNY
Дата сообщения: 25.06.2008 07:46

Цитата:
Путь к файлу должен существовать

интересно, а что ты будешь копировать если путь не верен???

Цитата:
не должно быть запрещающих атрибутов и т.д.

хм, ну если ты от имени админа все делаешь, то никаких вопросов быть не должно быть, иначе -- бей по рукам, тем кто искл админа из пермиссий

Добавлено:
Вариант 1
есть такая CaCLS
Просмотр или изменение файлов избирательных таблиц управления доступом (DACL).
Устанавливай права перед копированием и копируй
Автор: Real Root
Дата сообщения: 25.06.2008 12:41
YNY

Цитата:
интересно, а что ты будешь копировать если путь не верен???

Блин, ну неужели не бывает ситуаций, когда нужно скопировать файл, например в D:\Program Files\AnyCompany\AnyProgram\ и при этом даже каталога D:\Program Files\ еще не существует. Есть же проги, которые это без лишних эмоций воссоздают каталоги на всем пути. Вот нужно что-то типа этого.


Цитата:
хм, ну если ты от имени админа все делаешь, то никаких вопросов быть не должно быть, иначе -- бей по рукам, тем кто искл админа из пермиссий

Под запрещающими атрибутами я имел ввиду атрибуты "Только чтение" и "Системный".

Впринципе, и для первого и второго случая можно написать функции, обрабатывающие исключения, но код распухнет прилично. Если нужно копировать много файлов, то такие функции только навредят быстродействию.
Автор: yazzi
Дата сообщения: 26.06.2008 12:27
Добрый день. Может кто что подскажет.Существует домен. В домене есть рабочие станции и есть терминал. Некоторые пользователи работают на станциях, а некоторые на терминале. На терминале запрещено выполнение .exe скриптов. В групповой политики у пользователей было прописано "startup.exe". Проблема состоит в том чтобы на терминале не запускать логон скрипт. Я написал следующий скрипт
Option Explicit
Dim WshNetwork
Dim WshShell
Dim Computer
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set WshShell = WScript.CreateObject("WScript.Shell")
Computer=WshNetwork.ComputerName
If Computer<>"S915-TERMINAL" Then
WshShell.Run "startup.exe"
Else
WScript.Quit
End If
Но так как и выполнение скриптов на терминале для обычных пользователей запрешено он тоже не работает
Отсюда и вопрос существует ли возможность запуска скрипта из под админа или системы. Или кто может подскажет другой вариант.
Автор: Vby
Дата сообщения: 26.06.2008 17:23
yazzi
А может проще настроить ГПО, чтобы на терминалке не выполнялся логон скрипт?
Автор: yazzi
Дата сообщения: 27.06.2008 07:36
Не подскажешь как это сделать.
Автор: ohlos
Дата сообщения: 27.06.2008 08:34

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

Через утилиты AdminLnk или PsExec. Хотя можно попробовать обойтись и стандартным виндузовским RunAs
Автор: Vby
Дата сообщения: 27.06.2008 10:11
yazzi
Сделать копию политики, исключить из нее логон скрипт, первую политику поставить применение на компы домена, вторую - только на терминалку

ЗЫ: по ГПО есть тема Групповые политики (Group Policy, GPO): документация, ссылки
Автор: yazzi
Дата сообщения: 30.06.2008 12:56
Vby
Спасибо. Сделал следующим образом. Создал 2 подразделения в одно запихнул терминал, а другую все остальные компы. Создал две новых групповых политики(Хотя впринципе можно обойтись одной ) для каждого подразделения одну с логон скриптом другую без. И поставил флаг вклучено на Конфигурация компьютера/Административные шаблоны/система/групповая политика/ Режим обработки замыкания пользовательской групповой политики.
Автор: hotch
Дата сообщения: 30.06.2008 13:31
aleksanchez


Цитата:
Код:Const ForReading = 1
Dim fso
Set fso = CreateObject("scripting.filesystemobject")
Set input = fso.OpenTextFile("c:\names.txt",ForReading)
Set objNewOU = GetObject("LDAP://OU=Finance,DC=fabrikam,DC=com")
Do Until objTextFile.AtEndOfStream
CompName = objTextFile.Readline

Set objMoveComputer = objNewOU.MoveHere _
("LDAP://CN=" & CompName & ",CN=Computers,DC=fabrikam,DC=com", "CN=" & CompName)
Loop


в файле c:\names.txt должны быть логины компов (по одному на строку)
Finance - имя контейнера, куда перемещаешь
В принципе должно работать, но не проверял, нет возможности щас
Соответственно то, что выделено красным надо поменять на свой вариант (путь/имя до файла с логинами и имя домена)


Прописал свои пути, откуда куда, при запуске ошибка в 6 строке: Error: object required: 'objTextFile'
Текстовый файл лежит в корне с: и содержит пока одну строку с логином компа.
Автор: aleksanchez
Дата сообщения: 01.07.2008 18:12
hotch
Мой косяк.
замени строку input на objTextFile

Автор: hotch
Дата сообщения: 02.07.2008 09:53
aleksanchez
Заработало!
Спасибо!

я добавил: On Error Resume Next т.к. при отсутствии логина компьютера в source OU выдавалась ошибка.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

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


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