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

» Автоматизация администрирования

Автор: veryom
Дата сообщения: 08.09.2006 12:03
tedhome

То же самое, но на VBS:


Код: Const FOR_READING = 1

strPath = Wscript.Arguments(0)
strExt = Wscript.Arguments(1)
strResFile = Wscript.Arguments(2)


Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objResFile = objFSO.CreateTextFile(strResFile, TRUE)

Set objFolder = objFSO.GetFolder(strPath)
Set colFiles = objFolder.Files

For Each objFile In colFiles
    If LCase(Right(objFile.Name, Len(strExt))) = LCase(strExt) Then
        objResFile.WriteLine
        objResFile.WriteLine("*************************************************************************")
        objResFile.WriteLine(objFile.Name)
        objResFile.WriteLine

        Set objSourceFile = objFSO.OpenTextFile(objFile.Path, FOR_READING)
        objResFile.WriteLine(objSourceFile.ReadAll)
        objSourceFile.Close
    End If
Next

objResFile.Close
Автор: freegate
Дата сообщения: 08.09.2006 12:19
Pav

Цитата:
Мну несколько легче должен быть скрипт - нужно вырубать всех!!! Дело в том, что отрабатывать он должен ночью, когда никого нет. Кстати, запуск пошедулерй от имени пользователя с админскими правами считается за выполнение в сеансе этого пользователя?
ЗЫ: архивация идёт отдельным средством.

Убери из моего текста IF NOT %UNT%==buh IF NOT %UNT%==gb-sks
остальное кидай в батник который запускай по расписанию на терминальнике(покрайней мере у меня он так работает) или воспользуйся батником Yourbill, у него покрасивее будет
Автор: Baloven1
Дата сообщения: 09.09.2006 17:15
Народ, подскажите как на VBS описать форму диалогового окна, в котором присутствует, сама форма разбитая на закладки (собственно с ее описанием основная проблема), далее на страцах формы должны быть переключатели, чекбоксы, тестовые поля ввода, кнока OK для передачи управления скрипту, на AutoIt знаю как это зделать а на vbs ниче не получается точнее совершенно ничего не могу разобраться, как эту форму вообще описать и в последствии получить с нее данные, имеется книга Руководство разработчика на whs 2.0 но в ней во первых нет описания формы с закладками, и упор делается на работу с пользователем через html, что по собственным соображениям делать не хочется. заранее биг сенкс.

mozers
за ссылку спасибо, поиском эту тему не нашел, заодно может кому и будет интересно вот моя интерпритация решения закачки файла, сомневаюсь что она идеальна, но заодно и хотелось бы узнать как спрятать DOS окно в котором открывается WGET или вовсе без окна его запустить?

Код: Dim http
http="http://www.xxx.yy/file.html"
DownloadFile(http)
Sub DownloadFile(url) 'создание функции для закачки файла с интернет, можно прикрутить и другие переменные для сохранения файла в определенное имя и прочее
' Функция загрузки файлов с URL DownloadFile(url), гле url - адрес файла который требуется загрузить
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "wget.exe "&url, 1, true
End Sub
Автор: RussianNeuroMancer
Дата сообщения: 09.09.2006 17:26
А может hta подойдёт, тот же html, но не нужных окон браузера нет, выглядит как самостоятельное приложение.
Автор: Baloven1
Дата сообщения: 09.09.2006 17:37
вообще-то возможно и соглашусь , дело даже не в html или hta а в том что насколько я понял в первом и втором случае прийдется весь код скрипта внедрять в тот или другой код (html, hta) насколько я разбираюсь в сути вопроса, а от первого и от второго я к сожалению далек, раньше делал скрипты все на AutoIt но в силу работы необходимо на VBS перейти наконец-то, суть вообще этого "произведения" задать переменные в начале работы (по умолчанию данные взять например из ini-файла) и далее загрузить некоторые html-страницы сохранить их на диск, разобрать их на составляющие (в частности таблицы с этих страниц) загнать данные с таблиц в массив и пусть на обработку дальше... по сути скрипт по мойму достаточно будет большим и делается для себя чтоб в том числе и разобраться как использовать его (whs, vbs, js) уже в среде домена. в частности пока не знею как в дальнейшем полученные и обработанные данные загнать в поля другой программы с помощью vbs, т.е. после создания массива данные должны быть разнесены в программу которая формирует bin файл формат которого мне например непонятен пока и на autoit я просто запускаю программу и в поля форм переношу данные из массива...
Автор: Baloven1
Дата сообщения: 10.09.2006 12:20
Нарыл в указанной книге то что нужно но с помощью html НО "или я дурак или лыжи по асфальту не ездят" (с) не мое, но не работает подскажите где в книге очепятка (все проверил уже 10 раз по буквам все переписано точно!!!
в общем код-пример из книги файл form3.htm должен лежать в одной папке с скриптом

Код: <html>
    <head>
        <meta http-equiv="Content-Type"
            content="text/html; charset=iso-8859-1">
        <meta name="GENERATOR"
            content="Microsoft FrontPage Express 2.0">
        <title>
            Form input - by G. Born
        </title>
    <head>
    
    <body bgcolor="#C0C0C0" scrol="no">
        <script language="VBScript">
        <!-
            Dim ready
            Public TheForm
            
            Sub Button1_OnClick
                'Если пользователь щелкает ОК, об этом надо сообщить сценарию
                'WHS путем установки флага ready.
                ready = 1 'Пользователь завершил ввод информации
            End Sub
            
            Sub Window_OnLoad()
                'Здесь мы можем инициализировать форму
                Set TheForm = Document.ValidForm
                TheForm.fName.Value = ""
                ready = 0 'Пользователь не завершил ввод информации.
            End Sub
            
            Public Function CheckVal()
                'Эта функция вызывается cервером, чтобы проверить,
                'щелкнул ли пользователь кнопку ОК.
                CheckVal = ready
            End function
            
        '->
        </script>
        
        <h3>
            Form
        </h3>
        
        <hr>
            <form name="ValidForm">
                <p>
                    Name: &nbsp;
                    <input type="text" size="5" name="fName"> &nbsp;
                    Age: &nbsp;
                    <input type="text" size="3" name="fAge">
                    <br>
                    
                    Password: &nbsp;
                    <input type="password" size="12" maxlength="8"
                            name="fPassw">
                    &nbsp; &nbsp;
                    <input type="button" name="Button1" Value="OK">
                    <br>
                    
                    <input type="checkbox" name="fPrinter" value="1"
                            checked>
                    Printer &nbsp;
                    <input type="checkbox" name="fScreen" value="2">
                    Screen
                    <br>
                    
                    Remarks:
                    <br>
                    
                    <textarea cols="40" rows="5" name="fRemark">
                    </textarea>
                </p>
            </form>
        </hr>
    </body>
</html>
Автор: Refugee
Дата сообщения: 10.09.2006 19:27
Baloven1
из form3 выбросить комментарии <!- и '->
в .vbs заменить
If Error <> 0 Then на If Err Then
age = "Age: " & oIE.Document.ValidForm.fAge.Valuename заменить Valuename на Value


Автор: Baloven1
Дата сообщения: 11.09.2006 00:26
последнее - мой косяк спасибо
а вот что касается исправлений насчет проверки ошибки - не катит теперь выдает ошибку 438, пробовал на 3х компах с установленными послежними хотфиксами на w2003s&SP1 и на XP&SP2 - одно и то же не могу понять что за напасть, ведь пример из книжки, нашел книгу в оригинале на английском, там то же самое тока коментарии на инглише...

Добавлено:
блин насколько я понял то ошибка эта вылазит из-за того что эксплорер блокирует скрипт в форме до того момента пока не разрешить его через панель, как разрешить на локальном хосте запуск скрипта без этого предупреждения так и не нашел как заставить скрипт ждать тоже пока нет соображений...

Добавлено:
мои подозрения по поводу безопасности эксплорера оправдались полностью, переложил файл htm-формы на другой сервер, в функции GetPath заменил строку GetPath = Left(path, inStrRev(path, "\")) на GetPath = "\\server\c$\" соответственно файл формы положил в корень диска C и все заработало, вообще я ложил файл на другой комп/сервер и обращался по UNC имени, но я так понимаю что можно таким же макаром обратится и на локальный, за помощь всем спасибо кто подсказал, с формами разобрался ну для полного счасть может ли кто приведенные выше код переделать под вывод самостоятельного окна? с набором хотябы этих же элементов, дальше уж сам расковыряю, просто руки не доходили все разобраться с доступом к объектам и как их прописывать...
Автор: Refugee
Дата сообщения: 11.09.2006 01:38
Baloven1
IE options/advanced/security/ allow active content to run in files on My Computer
Автор: Baloven1
Дата сообщения: 11.09.2006 01:41
ну и в догонку. я понимаю что это нарушение политик безопасности особенно в среде домена, но можно ли как-то разблокировать выполнение скрипта в html-форме на время открытия этой формы. а после ее закрытия блокировку вернуть на место?

Добавлено:
Помогло спасибо, а возможно с скрипта эту опцию перед открытием формы включить, и по закрытии экземпляра эксплорера отключить заново?
кстати в русской винде эта опция Сервис/свойства обозревателя/дополнительно/поставить галку "Разрешать запуск активного содержимого файлов на моем компьютера"
Автор: IgorXI
Дата сообщения: 11.09.2006 05:34
Подскажите, как перенести "Избранное" vbs скриптом
Автор: Baloven1
Дата сообщения: 11.09.2006 08:24
IgorXI
скопировать папку %userprofile%\Избранное ниже пример из скрипт-центра подставь туды свою папку
Скопировать файл:

Код: Const OverwriteExisting = TRUE

Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:\FSO\ScriptLog.txt" , "D:\Archive\", OverwriteExisting
Автор: Baloven1
Дата сообщения: 13.09.2006 02:31
Народ, подскажите, чтот я в тупик зашел
в общем есть 4 константы (текстовые) которые нужно использовать при определенных условиях, т.е. имеющие заданный диапазон, в частности в градусах, но первый допустим равен от 0 до 69, второй от 69 до 147, третий от 147 до 270, и четвертый от 270 до 360, т.о. диапазоны не равные по градусам.
в общем так
Если диапазонА пересекается с первым, то выполняем определенные действия
Если диапазонА пересекается с вторым, то выполняем определенные действия
Если диапазонА пересекается с третьим, то выполняем определенные действия
Если диапазонА пересекается с четвертым, то выполняем определенные действия
т.е. диапазонА нужно проверить на пересечение с каждым из имеющихся как это зделать не могу ни одного примера найти в общих чертах знаю как но получается огромная куча проверок, а чувствую одним местом что есть какая-то функция которая может диапазоны сравнивать и задавать...
Автор: veryom
Дата сообщения: 13.09.2006 08:05
Baloven1

Цитата:
чувствую одним местом что есть какая-то функция

А самому написать эту функцию?
Автор: unhappy
Дата сообщения: 13.09.2006 08:35
Baloven1
не понял условия задачи и того каким боком она относится к администрированию.
Может тебе в http://forum.ru-board.com/topic.cgi?forum=33&topic=5993&start=140 обратится? И условие задачи расписать чуть понятнее
Автор: Bugriy
Дата сообщения: 13.09.2006 15:09
Вопрос к тем, кто менал пароль встроенному администратору логон-скриптом вида
net user Administrator newpassword. Какие вы разрешения задавали на файл чтобы он мог применяться, но юзеры чтоб не могли в него влезть и пароль поменять? Я сделал полный доступ SYSTEM аккаунту и убрал доступ ВСЕм. В результате скрипт не отрабатывает.
Автор: Refugee
Дата сообщения: 14.09.2006 00:26
Bugriy
надо давать доступ группе DomainComputers или какой-нибудь своей, куда входят компы, на которых скрипт отрабатывается. Кстати, если у юзера есть админские права на машину, он при помощи psexec сможет посмотреть то, к чему доступ есть только у компа. Безопаснее было бы в логон скрипте генерировать случайный пароль и записывать его в файл, куда доступ только на запись.
Автор: pav
Дата сообщения: 14.09.2006 08:28
freegate и Yourbill
Для выполнения предложенного вами батника, как я понимаю, нужен Windows 2000 Resource Kit. Но на хомяке дают выкачивать покомпонентно. Какие части из списка нужно мне выкачать, чтобы батники отрабатывали?
Автор: freegate
Дата сообщения: 14.09.2006 08:56

Цитата:
freegate и Yourbill
Для выполнения предложенного вами батника, как я понимаю, нужен Windows 2000 Resource Kit. Но на хомяке дают выкачивать покомпонентно. Какие части из списка нужно мне выкачать, чтобы батники отрабатывали?

Для моего ничего не требовалось ибо Windows 2000 Resource Kit сам точно неставил(сервак правда в наследство достался), батник запускаю на серваке
Автор: Yourbill
Дата сообщения: 14.09.2006 09:41
freegate
В моем батнике из RK используются:

Код: sleep и now
Автор: pav
Дата сообщения: 14.09.2006 09:47
Yourbill
И в каком из указанных на сайте MS архивов вышеназванные команды?
Автор: Baloven1
Дата сообщения: 16.09.2006 01:08
unhappy
Ты прав бесспорно, однако как писал ранее сразу не нашел этой ветки да и обсуждение там вялое, а хоть текущая решаемая задача и ни каким образом не относится к администрированию, тем не менее за нее взялся именно для того чтоб изучить whs для целей применения в администрировании. Потому как в принципе задачу поставил себе достаточно не ординарную (имхо) в которой достаточно много требуется использовать возможностей языка, а уж с дальнейшим думаю дальше разберусь

В общем задача следующая (если, есть дикое желание все же перенести это в "удобняшки" то я туды перекопирую все свои посты, но только если есть кому-то кроме меня в этом интерес):
идея в том чтобы автоматизировать обновления данных по спутниковым транспондерам для программы ProgDVB ну а на выходе данные можно преобразовать уже для какой угодно программы или устройства (для целей перепрошивки тех же спутниковых тюнеров) дописав модуль в скрипт.
Сейчас скрипт умеет:
1. прочитать псевдо-INI (как обрабатывать разделы пока не придумал, потому просто пишет текстовик с расширением INI)
2. открыть форму в соответствии с INI получить данные у пользователя и записать их обратно в INI
3. в зависимости от положения введенных пользователем рассчитывается угол наклона спутниковой антеннны, по нему же определяется а виден ли вообще в точке пользователя спутнк(-и) (реализован расчет но до работы с модулем еще не дошел)
4. ....
на данный момент бьюсь (успешно ) над обработкой сайта _www.lyngsat.com. Зделано: в зависимости от положения пользователя грузится та или иная страница со списком спутников (как раз выше и был пост-вопрос под это, уже зделал) и в зависимости от необходимых пользователю частотных диапазонов обработка некоторых спутников (по цветовой маркеровке на сайте) не производится, собственно на этом и остановился вчера, работаю дальше

Добавлено:
Перечитал то что понаписал
Это полный Off-TOP у администраторов прошу прощения...
в общем я так понимаю задача не относится ни к администрированию, ни к удобняшкам (или по крайней мере в большей степени чем к администрированию) если у кого есть желание развивать сею идею дальше то напишите в личку, может тогда проще отдельную ветку зделать будет.
Автор: Yourbill
Дата сообщения: 16.09.2006 12:12
pav
Не знаю, у меня пакеты RK еще начиная с NT4.0. Вот выложил все три в архиве, забираете кому нужно
Автор: VanGo
Дата сообщения: 18.09.2006 23:03
Всем привет! Помогите мне плиз(хоть добрым словом)!)-бился два дня
Исходные данные:есть MS Office 12 Beta, ОС: MS XP
Проблема: истек срок использования у офиса
Анализ: показал что если перевести время на пару месяцев назад то (о чудо) все работает!
Задача: по клику на файл file.doc запускать созданное нами приложение, которое делает:
1) Переводит время на 2 месяца назад
2) Запускает Word с передачей ему в качестве параметра file.doc
3) Возвращает время обратно
4) Все должно быть по возможности незаметно
Решения по ходу возникновения в голове:
1)Воспользоваться всемогущим Neo Sign 0f Misery
Проблема: не смог передать параметр file.doc с ее помощью. В остальном идеальное решение.
2)Написать bat-файл
Недостатки: болтается на экране как бельмо
Ксати вот он:
@echo off
rem сохраняем текущую дату
set tecdata=%DATE%
rem устанавлтваем новую
DATE=18.07.2006
rem (а почему бы и не такая))
rem запускаем ворд с параметром
start "word" "C:\Program Files\Microsoft Office\OFFICE12\WINWORD.EXE" %*
rem пауза для того что бы ворд запустился
ping -n 5 localhost > nul
rem восстанавливаем дату
date=%tecdata%
3)Написать скрипт VBS (другие языки не рассматриваю по причине полного отсутствия познаний)
Он должен запустить в скрытом режиме предыдущий батник с передачей ему file.doc
Проблема:как реализовать запуск этого скрипта по щелчку на file.doc?????
Ну вот и он сам:
Set objArgs = WScript.Arguments
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "cmd.exe /c путь_к_батнику.bat " & objArgs(0), 0, false
Примечание:запускать надо с параметром (file.doc) а то ошибка.....
Ну и наконец пришлось написать еще один батник для запуска скрипта, по другому я не знаю как,вот он:
@echo off
cscript.exe "путь_к_скрипту.vbs" %*
Но возникает опять же мелькание окошка, хотя и недолгое.
Мне бы хотелось:
Обязательно
1) Запускать file.doc с помощью скрипта без последнего батника. Подскажите плиз как это сделать!!!
Желателльно:
2) Реализовать весь алгоритм на скрипте, сам не могу так как плохо его знаю.
Тем кто дочитал все-таки до конца:Заранее спасибо!)

---------
Все разобрался сам с помощью волшебной Neo Sign 0f Misery версии 0.4
Автор: Baloven1
Дата сообщения: 20.09.2006 04:06
VanGo
по сути тебе нет необходимости запускать батник, все можно зделать на VBS позже если никто более решение не подскажет сам отвечу, надеюсь это будет сегодня, а пока посмотри в сторону скриптцентра и документации все есть на мелкософте, ссылки в шапке

Добавлено:
VanGo
как набросок алгоритма скрипта:
в реестре:
заменить команду запуска для Doc & XLS файлов вместо них подставить вызов скрипта с передачей параметра из командной строки.
далее в самом теле скрипта:
сохраняем текущую дату в переменную
меняем дату на необходимую
запускаем ворд (ексель) и ждем пока процесс станет доступным с параметром из командной строки, т.е. запущенным файлом.
возвращаем дату на место.

собственно все это реализовано в твоем батнике, за исключением подмены команды запуска в реестре, остается его перевести на VBS.
Автор: VanGo
Дата сообщения: 20.09.2006 23:30
Danke shon, но я уже наплясался с этими скриптами, особенно с чехардой с кавычками для передачи строк состоящих из нескольких слов, связка

' собираем все переданные параметры в одну строку и присваиваем Argum
For i = 0 To objArgs.Count - 1
    Argum = Argum + objArgs(i)
next
' окружаем Argum кавычками
Argum = " """ & Argum & """ "
' запускаем батник
WshShell.Run "cmd.exe /c ""C:\Program Files\StartMS\qwe.bat "" " & Argum, 2,

не заработала, последняя строка не запускала батник, в чем причина я устал искать, в дебри тоже не захотелось залазить, короче после 3-х дней танцев с кавычками скачал последнюю версию Neo Sign 0f Misery 0.4 и буквально за полчаса сделал все в лучшем виде.) Собственно все...Alles gut))
Баловень первый спасибо!)
Автор: pav
Дата сообщения: 21.09.2006 08:08
Yourbill
Как-то не полностью батник отрабатывает.
Сегодня с утра пораньше запустил вручную, благо было 6(!) оставшихся со вчерашнего дня пользователей. Выкинул лишь троих из шести. Специально зашёл перед этим ещё и под другим именем в терминал. Второй не был сброшен, более того и никаких сообщений не получил. Хотя в окне консоли батник сообщал, что отсылает сообщения. Может связано это с тем, что пользователи сеанс завершать завершали, но терминальная сессия с парой-тройкой файлов осталась. Хотя новоиспечённый пользователь, зашедший перед запуском батника (т.е. я, но в другой сессии и как простой пользователь) тоже не был разлогинен и остался при своих на сервере.
freegate
Твой батник вообще пролетает и тоже ничего не делает. Хотя в консоли видно, что идёт перебор по существующим сеансам.
Автор: Allex_Van_Fogen
Дата сообщения: 21.09.2006 08:35
Нетривиальная задача:

1. Найти все *.eml файлы в папке С:\Inetpub\mailroot\Mailbox содержащие фразу RDNS Failed.
2. Заменить в найденных файлах строку Subject: #####... на Subject: SPAM: #####...

Со спамом боремся? ;o)
Автор: freegate
Дата сообщения: 21.09.2006 10:09


Цитата:
freegate
Твой батник вообще пролетает и тоже ничего не делает. Хотя в консоли видно, что идёт перебор по существующим сеансам.


Интересно у тебя в ручную команда Logoff отрабатывает или нет
Автор: Yourbill
Дата сообщения: 21.09.2006 10:24
pav
А что у тебя за сервер 2000-й или 2003-й. У меня батник заточчен под 2003, на 2000-й могут быть отличия. Вообще я мог гдето в батнике слегка ошибиться, я ведь его вырезал и комметы дописывал. Сделай дебаг Вместо всяких комманд типа отсылки сообщений и т.п подставь echo и паузу в нужных местах и посмотри как парсятся ответы.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Зеркалирование дисков Win2000


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