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

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

Автор: abasov
Дата сообщения: 24.07.2008 07:39
niichavo
немного не то, нашел, если интересно: http://www.intuit.ru/department/os/compromtwin/12/2.html

Автор: vladk1973
Дата сообщения: 24.07.2008 14:11
FighterForLife
RMDIR - консольная команда удаления папки со всем содержимым
Пуск -> Выполнить -> cmd -> В окне консоли набираешь RMDIR /?
Дальше все понятно будет
Скрипт запихиваешь прямо как есть в файл, например "Mydel.vbs" и запускаешь как батник обычный.

Теперь про папку, которую нельзя удалять.
Чтобы не изобретать велосипед уж лучше удалить, а потом снова создать, чем писать скрипт перебора всех папок и файлов. Для перебора одной команды нет
Автор: rkhodjaev
Дата сообщения: 24.07.2008 15:38
Извините,знаю скорее это тема не для данного поста,но в И-буксу и в других топиках не ответили.Мне очень надо книжка Администрирование в информационных системах или же любая другая книжка на эту тему в электронном виде.Пожалуйста не отпинайте.....
Автор: abasov
Дата сообщения: 24.07.2008 19:36
Vadimka_DDD
засовываете в планировщик заданий по Вашему выбору
....кстати тема уже было в топике


Код: Dim objEmail, sDirectoryPath

Set oFSO = CreateObject("Scripting.FileSystemObject")
sDirectoryPath = "C:\Intel\Logs" ' брать атачи здесь
set oFolder = oFSO.GetFolder(sDirectoryPath)
set oFileCollection = oFolder.Files

For each oFile in oFileCollection
Set objEmail = CreateObject("CDO.Message")
objEmail.Bodypart.Charset = "windows-1251"
objEmail.From = "from@xxx.ru"
objEmail.To = "to@xxx.ru"
objEmail.Subject = "Тема"
objEmail.Textbody = "Содержимое письма!"

objEmail.AddAttachment oFile.Path

objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "192.168.11.11"
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send
Set objEmail = Nothing
Next
Автор: Real Root
Дата сообщения: 28.07.2008 11:13
Ребята, подскажите, как сделать что-то если дата больше указанной?
Вот такой код работает через попу:
If (Date >= "25.08.2008") Then
Он отработает позже 25 чилса любого месяца и года. Как сделать по-уму?
Автор: niichavo
Дата сообщения: 28.07.2008 14:43
Real Root
Формат даты нужно указывать буржуинский, если не ошибаюсь, т.е. не "25.08.2008", а "8/25/2008". Есть ещё ф-ция CDate (character-to-date), которая переводит строковый параметр в дату. Используя эту ф-цию, можно сравнивать даты:
Код: if (Date >= CDate("8/25/2008")) ...
Автор: YNY
Дата сообщения: 29.07.2008 04:57

Цитата:
Real Root

подставь свою дату и посмотри, что скажет
msgbox Date="29.07.2008"
Вообще-то данная функция выдает формат даты в соответствии с виндовыми настройками "Язык и региональные стандарты" а не так как это сказал
Цитата:
niichavo
+ когда пишешь дату убедись что у тя там точки и на инглише раскладка


Добавлено:
к стати, если тебе нада только дату, то
IF (Day(date)>=25) then

Добавлено:
условие ">=" говорит что и 25 числа тоже будет выполняться, а вот если поставить ">", то будет начинаться если 26 число и т.д. )
Автор: niichavo
Дата сообщения: 29.07.2008 09:08
YNY
Наглая ложь! Про то в каком формате CDate выдаёт дату, я не говорил ни слова. А в качестве параметра дату можно задавать хоть буржуинском формате, хоть в региональном. Я же рекомендовал в буржуинском, о чём очень сожалею, простите великодушно.
Автор: Real Root
Дата сообщения: 29.07.2008 14:02
niichavo
Спасибо большое, про CDate я не знал.
В Русской винде нужно задавать именно в русском формате.
Вобщем, если кому нужно, то проще сделать так:
lacaldate = Cdate("25.08.08")
IF date >= lacaldate then ...
Всем спасибо за дискуссию, очень помогли.
Всем удачного дня
Автор: testir
Дата сообщения: 29.07.2008 15:51
Помогите разобраться, нужно запускать на удаленном компе скриптик ( на vbs или cmd)
Который удалял все имеющиеймя принтеры и устанавливал нужные
(опубликованные в AD). Или для примера хотя бы просто запустить какой либо скрипт на удаленном компе. Вот в инете нашел такой вариант скрипта

Код:
On Error Resume Next
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
CompName = "newcomp" 'имя компьютера
UserName = "newcomp\admin" 'имя пользователя
Pass = "1111111" 'пароль пользователя
Set objServices = objSWbemLocator.ConnectServer(CompName, "root\CIMV2", UserName, Pass, Null, Null, 0)
If Err.Number <> 0 Then
    WScript.Echo Err.Number & ": " & Err.Description
    WScript.Quit
End If
Set objClass = objServices.Get("Win32_Process")
Res = objClass.Create("wscript.exe c:\ver.vbs", Null, Null, PID)
If Res <> 0 Then
    WScript.Echo "Код ошибки: " & Res
End If
Автор: abasov
Дата сообщения: 30.07.2008 05:47
testir

скритп рабочий, но ИМХО лучше использовать PsExec:

--------------
psexec \\comp -u comp\admin -p XXXXXX -I cscript \\fs\Distr\upload\word.vbs
--------------

Код: On Error Resume Next
Dim appl, strUser, strPassword, strComputer
Dim objSWbemLocator, objServices

'==============================

strComputer=InputBox("Введите имя ПК или IP:")
'strComputer = "backup" ' <======= ИМЯ КОМПА <===========
appl="regedit /s ""\\fsDistr\Standart_PO\Office2003\outlook\outlook.reg""" 'команда
strUser = "backup\admin" 'имя пользователя
strPassword = "XXXXXX"

'==============================

Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objServices = objSWbemLocator.ConnectServer(strComputer, "root\CIMV2", strUser, strPassword, Null, Null, 0)

If Err.Number <> 0 Then
WScript.Echo Err.Number & ": " & Err.Description
WScript.Quit
End If
Set objClass = objServices.Get("Win32_Process")
Res = objClass.Create(appl, Null, Null, PID)
If Res <> 0 Then
WScript.Echo "Код ошибки: " & Res
else If Res = 0 then
WScript.Echo "Выполнено"
End If
End If
Автор: niichavo
Дата сообщения: 30.07.2008 07:49
abasov

Цитата:
ГУРУ подскажите как Русинович реализовал интерактивное взаимодействие с пользователем, на уровне API?...
Ведь в WMI такой режим не работает.

Я не гура, но таки вставлю свой комментарий. Как реализовал сие Док. Марк Руссинович мне не ведомо. Онако, интерактивный процесс можно запустить удалённо используя шедулер (назначенные задания). How Can I Remotely Start an Interactive Process? Возможно, что по тому же принципу работает и psexec, когда нужно запустить интерактивный процесс.
Автор: abasov
Дата сообщения: 30.07.2008 08:06
niichavo
шедулер как естественное средство единственное? О других способах я пока не слышал
Автор: YNY
Дата сообщения: 30.07.2008 08:44

Цитата:
Ведь в WMI такой режим не работает

а по конкретней мона, а то не совсем понятно про какое "интерактивное взаимодействие с пользователем..." ты гришь, а так на угад: есть относительно новый формат от микрософт который позволяет делать GUI с использованием скриптов HTA
http://www.script-coding.info/HTA.html
или вот еще
http://www.script-coding.info/svcsvc.html
Автор: abasov
Дата сообщения: 30.07.2008 09:19
YNY
Конкретно psexec с ключом -I. Когда удаленно запускаешь notepad, блокнот явно запускается в сессии пользователя. Мне известны два варианта интерактивного взаимодействия (не удаленный раб. стол), psexec и шедулер, последний запускается от системной учетки.
Автор: YNY
Дата сообщения: 30.07.2008 10:47

Цитата:
удаленно запускаешь notepad

нотепад запускается так как запускается и нет никакой разницы как это делается - скрипт тут нипричем, хотя ты можешь не разворачивать окно или свернуть его (Shell.run)

Цитата:
шедулер,
-- вообще то шедулер не разворачивает окна если он работает как сервис
http://www.microsoft.com/rus/technet/sysinternals/utilities/psexec.mspx
Программа PsExec — это облегченный вариант Telnet

есть такая штука как DameWare NT Utilities в кот есть нечто вроде удаленной консоли, а уж в клонах пингвинских -- просто реальность

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

Добавлено:
Set WshShell = CreateObject("WScript.Shell")
Set WshExec = WshShell.Exec("nslookup 127.0.0.1")
WScript.Sleep 7000
Set TextStream = WshExec.StdOut
Str = vbNullString
While Not TextStream.AtEndOfStream
Str = Str & Trim(TextStream.ReadLine()) & vbCrLf
Wend
MsgBox Str

Возвращается объект "WshScriptExec", который позволяет контролировать ход выполнения запущенного приложения и обеспечивает доступ к потокам StdIn, StdOut и StdErr этого приложения

Добавлено:

Цитата:
блокнот явно запускается в сессии пользователя

какова удаленного? или обоих? хотя т.к. программа PsExec — это облегченный вариант Telnet, не удивительно
Автор: abasov
Дата сообщения: 30.07.2008 12:48
YNY
Удаленный рабочий стол можно реализовать многими средствами, здесь речь идет о выполнении интерактивного приложения на стороне клиента. С помощью скриптов? инетресно, нигде не встречал подобного? Если это аля rdp - смысл?...
будьте добры пример в студию

Добавлено:
повторюсь, шедулер работает от системной ученой записи, как например acl system
http://www.microsoft.com/rus/technet/sysinternals/utilities/psexec.mspx
Служебные программы, такие как Telnet, и программы удаленного управления, такие как PC Anywhere компании Symantec, позволяют выполнять программы в удаленных системах, однако их не так просто установить, поскольку требуется устанавливать еще и клиентское программное обеспечение в тех удаленных системах, к которым необходимо получить доступ. Программа PsExec — это облегченный вариант Telnet. Она позволяет выполнять процессы в удаленных системах, используя для этого все возможности интерактивного интерфейса консольных приложений, и при этом нет необходимости вручную устанавливать клиентское программное обеспечение. Основное достоинство PsExec — это возможность вызывать в интерактивном режиме интерфейс командной строки в удаленных системах и удаленно запускать такие инструменты как IpConfig. Это единственный способ вывести на экран локального компьютера данные об удаленной системе
Автор: YNY
Дата сообщения: 31.07.2008 07:14

Цитата:
abasov

я не говорил что у меня есть такая вещь как rdp на скрипте, но такое вполне осуществимо, по моему мнению, а тратить на это время -- у меня нет необходимости.

"интерактивного интерфейса консольных приложений..." -- консольные приложения на то и консольные, что имеют только возможность принимать параметры коммандной строки и никакова собственного GUI не имеют => мнимая интерактивность, т.е. готовый запрос и ответ на него посредством консоли с GUI.

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

Добавлено:
я думаю что русинович использовал RCP, но лезть в дебри MSDN и C++ не охота, просто выссказал свое мнение раз нет более релевантного ответа

Добавлено:
abasov

Цитата:
выполнении интерактивного приложения на стороне клиента. С помощью скриптов?

добавь полный путь к Word в appl в своем примере(
Цитата:
Res = objClass.Create(appl, Null, Null, PID)
) и т.о. запустишь интерактивное приложение на стороне клиента )
Автор: testir
Дата сообщения: 31.07.2008 10:19
abasov


Цитата:
--------------
psexec \\comp -u comp\admin -p XXXXXX -I cscript \\fs\Distr\upload\word.vbs
--------------


Спасибо за подсказку, работает, т.е. скрипт выводит версию WSH на удаленном компе )

Теперь столкнулся со следующей проблемой, мне нужно чтобы скрипт запускаемый на удаленном компе устанавливал опубликованные принтеры в АД.
Код скрипта подключающего принтеры:


Код:
Option Explicit
Dim WSHNetwork, Computer, Path, strComputerDN, objSysInfo, objComputer, sPrintPath, PrintLocation
Dim objWMIService, colInstalledPrinters, objPrinter
Set WSHNetwork = CreateObject("WScript.Network")
On Error Resume Next
sPrintPath = "\\serv\HP2430"
WSHNetwork.AddWindowsPrinterConnection sPrintPath
WSHNetwork.SetDefaultPrinter sPrintPath
Автор: abasov
Дата сообщения: 31.07.2008 10:32
wscript exited on bcp-mashine with error code 0.
как раз это значит что psexec успешно выполнил задачу.
А не поключает это сам скрипт не работает. права, синтаксис...
Автор: slech
Дата сообщения: 31.07.2008 12:31
всем привет. кто подскажет как как получить сегодняшнюю дату и время текушее в виде yyyymmddhhmm
спасибо.
Автор: Nester777
Дата сообщения: 31.07.2008 13:14
Помогите, пожалуйста написать скрипт. Суть в том что начальник использует Radmin для наблюдения за работой сотрудников, при этом одновременно открыто 9 окон масштабируемых (Radmin Viewer 3) но когда сотрудник выключает или перезагружает компьютер приходится вручную заново запускать окно просмотра по возвращении сотрудника на рабочее место, возможно ли написать батник, чтобы он раз в минуту проверял запуск этого окна, если его нет, то проверял подключение компьютера к сети и если комп в сети запускал окно просмотра удаленного компьютера (аутентификация в Radmin - NT авторизация).
Автор: niichavo
Дата сообщения: 31.07.2008 15:50
slech

Код:
strDate = Year(Date) & Month(Date) & Day(Date) & Hour(Time) & Minute(Time)
MsgBox strDate
Автор: Nester777
Дата сообщения: 31.07.2008 16:46
Спасибо, а как проверку на запущенное окно radmina организовать, при условии что несколько окон уже запущены, а остальные надо проверять?
Автор: slech
Дата сообщения: 31.07.2008 16:54
niichavo
спасибо. наваял вот так:

Цитата:
objDay=Day(Date)
If objDay<10 Then objDay="0" & objDay
objMonth=Month(Date)
If objMonth<10 Then objMonth="0" & objMonth
objYear=Year(Date)
objHour=Hour(Time)
If objHour<10 Then objHour="0" & objHour
objMinute=Minute(Time)
If objMinute<10 Then objMinute="0" & objMinute

Set objShell = WScript.CreateObject("WScript.Shell")
objShell.Run "MyBat.cmd " & objYear & " " & objMonth & " " & objDay & " " & objHour & "" & objMinute,1,TRUE
Автор: Nester777
Дата сообщения: 31.07.2008 17:05
Выглядит приблизительно так вот как проверить запущенные процессы что они относятся к определенному окну radmin?
Автор: abasov
Дата сообщения: 31.07.2008 18:34
Nester777
мда...и что шефу совсем нечем заняться? сорри за офтоп не выдержал
(office 2 сезон 5)
Автор: OOD
Дата сообщения: 31.07.2008 18:44
Nester777
через telnet радмина:
tasklist


Добавлено:
http://pic.rapidshare.ru/744713
Автор: Real Root
Дата сообщения: 31.07.2008 21:32
Ребяты, поскажите пожалуйста.
Стоит задача рубить все процессы, кроме указанных всписке (конфигурационном файле) с периодичностью в 5 - 60 сек. - это чтоб пока админу пиво не поставят в игры не играли
Ну, периодичность то понятно как сделать Wscript.Sleep, а вот как рубать все остальное кроме нужного - тут незадача.
Автор: OOD
Дата сообщения: 31.07.2008 21:50
Real Root

Код: taskkill /im notepad.exe /im sol.exe /im winmine.exe

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

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


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