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

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

Автор: ShriEkeR
Дата сообщения: 23.05.2011 20:07
Предыдущие части: 1 | 2



Коллеги-администраторы...


Думаю каждый из вас сталкивался с необходимостью выполнять некие несложные рутинные операции, на которые уходит много драгоценного времени.
Например, создать определенную структуру каталогов для каждого пользователя домена, изменить некие параметры в профилях всех или части пользователей, изменить полномочия/владельца однотипных файлов в разных каталогах т.д.
Я, как сисадмин, тоже не раз был вынужден делать все это. Руками делать это тоскливо и муторно, как вы понимаете. Должен заметить, что по неким "религиозным" убеждениям я всегда старался избегать любых отношений с бейсиком и его производными. Еще мой отец учил меня не иметь с ним никаких дел. Буквально. А теперь я учу своего сына тому же. Но, тем не менее, полностью избежать этого, по всей видимости, невозможно, тем более, что бейсик от M$ сейчас уже далеко не та "лапша", которой он был изначально, а современный структурированный язык, нашедший множество применений. Похоже, что для меня в очередной раз настала пора выучить еще что-то. Знаете, как курильщик много раз безуспешно пытается бросить курить, так и я не раз пытался подступиться к изучению VBScript, но пока никак не одолел. Лень, знаете ли. А инструмент в делах административных был бы весьма пользительный, должен заметить, для быстрого написания всякого рода скриптов.


Внимание ! ! !

Поскольку данный топ весьма не мал, не забывайте использовать "версию для печати" для более удобного поиска по теме. А также МЕГА ПОИСКОВИК от NEPa

Дабы не раздувать топ, примеры своих скриптов заключаем в тег "more"

Консольные команды. Командный интерпретатор

Очень часто многие задачи можно выполнить применяя CMD и BAT файлы,
в которые включают консольные утилиты.
Командная строка, батники\сценарии
Задачи на bat-файлах
CMD Line Tools for Windows 95/98/NT/2000/XP
Параметры .bat файлов #1
Параметры .bat файлов #2
Microsoft Resource Kits tools
Сайт справочник-поисковик по командам UNIX

Windows Script Host (WSH) & VBScript & JScript

Исчерпывающий набор док и линков по теме (то что нужно начинающему скриптологу )
Учебный курс "Программирование для администраторов " [CHM] - всем начинающим рекомендуется
TechNet Script Center Sample Scripts --- recomend
Microsoft Technet Scriptcenter
Microsoft Technet Community-Submitted Scripts Center
Коллекция примеров скриптов для работы с AD

BOOKS :
eBookz -- Системное администрирование под Windows
eBookz » Системное администрирование под Linux/FreeBSD/....
Windows Server Hacks, By Mitch Tulloch - recomend
Windows Admin Scripting Little Black Book, Second Edition
AdvancedWindows Script Host Developer's Guide
Active Directory Cookbook for Windows Server 2003 --- AD-скриптологампосвящается
MS Windows Command-Line Administrator's --- исчерпывающее руководство
по языку командного процессора (CLI -- Command Line Interface)
Учебный курс "Программирование для администраторов "

Вышеперечисленные буки можно взять здесь

ТOOLS :
Autoit+readme.rus
Scriptologic
AutoMate
KIXTART
nnCron-Планировщик с поддержкой скриптового языка -- РЕКОМЕНДУЮ
WGET, GREP, GETMAIL, BLAT for Windows замечательные консольные утилиты
4dos/4nt -- отличная замена стандартного коммандного интерпретатора
JudoScript - java подобный скриптовый язык с исходниками
VBS2EXE - утилита для компиляции vbs и js скриптов в exe выдранная из пакета PrimalScript

Дружественные темы :
Автоматическая (unattended) установка Windows
Интересные команды при работе с Linux
Отличный сайт по скриптингу, и не только
Использование KIX
Использование WMI
Программирование "удобняшек" на VBScript


[more]
Как сменить владельца файла на произвольного пользователя
Как определить владельца файла
таймер для .bat файла
Как написать скрипт чтобы получить MAC адрес всех машин (в домене)?
Как скриптом определить какая ОС на клиентском ПК?
Как посмореть на раб. станциях какие пользователи находяться в Local Administrator Group ?
Как в зависимости от имени залогинившегося пользователя исполнять разные команды в скрипте ?
Как изменить дату последней модификации файла
Как сделать запрос из AD через LDAP с условием по маске?
Смена букв разделов Е и D местами
Автоматическая установка приложений #1 - recomend
Автоматическая установка приложений #2
Использование VBScript для работы с FTP-протоколом
Работа с принтерами - добавить, удалить, расшарить. Поколдовать с портами
Чистка клиентских компьютеров (в домене) -- темповые папки
Как сравнить дату создания файла с заранее определенной датой
Резервирование базы DHCP сервера
Присвоение IP-адресса в зависимости от имени залогиневшегося пользователя
Удаленное выполнение команд
Скрипт, позволяющий посмотреть ключ (CD-KEY) от XP или 2003
Как изменить метку тома из ком. строки на пустую (ECHO .)
Как подключить несколько сетевых дисков
Как закриптовать тело скрипта
[/more]
Создается по материалам данного топа


Надеюсь данная тема будет полезна для Вас.
Jovanotti
Автор: YNY
Дата сообщения: 24.05.2011 06:32
Alukardd>ACL... Вообще-то первый раз слышу чтоб они могли на флешке пусть даже в архиве сохраняться
Автор: ndch
Дата сообщения: 24.05.2011 07:12
YNY
NTFS ?
Автор: firsteducation
Дата сообщения: 17.06.2011 17:14
Здрасте! можете помочь мне с вопросом: можно ли vbs скриптом отличить картридер от HDD диска? Приветствую YNY
Автор: gloomymen
Дата сообщения: 17.06.2011 17:45
firsteducation
приветсвую вас на планете земля
можно, hdd блочное устройство, картридер хз что
Автор: Alukardd
Дата сообщения: 17.06.2011 17:57
firsteducation
можно проанализировать вывод команды wmic diskdrive get caption,mediatype. Жесткий диск в ней светится как "Fixed hard disk media", картридер, например у меня показался как "Generic блаблабла Reader USB". (блаблабла - т.к. он их 5 все по разному обозвал, minisd, microsd, etc)
Дерзайте...

Добавлено:
Если вам припёрло именно vbs, то вот:
Код: strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer _
& "\root\cimv2")
Set colDiskDrives = objWMIService.ExecQuery _
("Select * from Win32_DiskDrive")
For each objDiskDrive in colDiskDrives
Wscript.Echo "Caption: " & vbTab & objDiskDrive.Caption & vbCrLF & _
"Media Type: " & vbTab & objDiskDrive.MediaType
Next
Автор: firsteducation
Дата сообщения: 18.06.2011 19:56
А возможно ли по букве диска если это картридер сделать условие типа переход если нет пропуск?
Автор: Alukardd
Дата сообщения: 18.06.2011 20:37
firsteducation
Куда переход, куда пропуск?
Можно что-то более конкретное?
Автор: firsteducation
Дата сообщения: 19.06.2011 14:29
Alukardd мне нужно сделать выполнение копирования на некоторые буквы дисков, и обойти картридер, для того чтобы избежать ошибку, то-есть сделать условное копирование: если не картридер делай иначе переход. Примерно так.
Автор: Alukardd
Дата сообщения: 19.06.2011 22:25
firsteducation
Забудьте про предыдущий скрипт, я при его реализации зашёл в тупик. Вот полностью рабочий.
Код: ' variables
Dim objFSO, objFileCopy
Dim strFilePath, strDestination, strComputer

' Define variable for match
Set RegularExpressionObject = New RegExp
With RegularExpressionObject
.Pattern = "Fixed|жесткий"
.IgnoreCase = True
.Global = True
End With

' Define variable for copy
strFilePath = "c:\fromfile.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFileCopy = objFSO.GetFile(strFilePath)

' Find Hard disk
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer _
& "\root\cimv2")
Set colDiskDrives = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk")
For each objDiskDrive in colDiskDrives
If RegularExpressionObject.Test(objDiskDrive.Description) Then
strDestination = objDiskDrive.deviceID & "\tofile.txt"
objFileCopy.Copy (strDestination)
End if
Next

Wscript.Quit
Автор: firsteducation
Дата сообщения: 20.06.2011 05:57
Alukardd Спасибо. А возможно ли: 1 сделать просто условие if do чтобы можно было вместо копирования выполнять различные действия; 2 сделать проверку именно по картридеру, а не по fixed hard drive, т.е выполнять действия если по букве картридера вставлен носитель(флеш); 3 сделать перебор по определённой букве прямо в скрипте без текстовых файлов.
Автор: Alukardd
Дата сообщения: 20.06.2011 12:44
firsteducation
Цитата:
сделать просто условие if do чтобы можно было вместо копирования выполнять различные действия
ну так в блоке If Then End if выполняйте что хотите - я что-то не понял вашего вопроса...
2 и 3 пункт не понял... вы хотите что бы если в КР была вставлена карта памяти что бы на неё копировалось???
Какой еще перебор по какой букве? Мы и так только в скрипте и ни какие текстовые файлы не использовали...

p.s. предлагаю вам внимательно прочитать скрипт и идти в гугл - бОльшую часть конструкций я взял именно от туда!
Автор: firsteducation
Дата сообщения: 20.06.2011 17:48

Цитата:
2 и 3 пункт не понял... вы хотите что бы если в КР была вставлена карта памяти что бы на неё копировалось???
да именно, и чтобы копирование происходило на указанную мною в скрипте букву. на счёт текстовых файлов fromfile.txt и tofile.txt.
Автор: Alukardd
Дата сообщения: 20.06.2011 19:57
firsteducation
Так вот моё новое понимание Вас.
Если честно вы меня уже начинаете утомлять...
В следующий раз хотелось бы сразу четкую формулировку того что именно Вам надо сделать. А не ту часть задачи которую вы не понимаете и решили вдруг спросить!!!
Код: On Error Resume Next

Dim objFSO, objFileCopy, strFilePath, strDestination, disks

' Define variable for copy
strFilePath = "c:\fromfile.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFileCopy = objFSO.GetFile(strFilePath)

disks = Array ("A","B","C","D","E","F","G","H","I","J","K")

For each disk in disks
strDestination = disk & ":\tofile.txt"
objFileCopy.Copy (strDestination)
Next

Wscript.Quit
Автор: firsteducation
Дата сообщения: 20.06.2011 21:19
Alukardd А если сделать так, но как сделать копирование вместо печати на экран:

@echo off
setlocal enabledelayedexpansion

for %%d in (c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do dir %%d:>nul 2>&1 && set zz=!zz!,%%d

echo %zz%

p.s возможно затупил, но очень надо!
Автор: Alukardd
Дата сообщения: 20.06.2011 22:07
firsteducation
Машу вать!!! Вы же меня зачем-то VBS просили!!! А ведь я его совсем не знаю, мне проще было с самого начала батник писать!
И зачем вам делать ТАК? Когда я вам дал рабочий скрипт?!
Есди будете копировать не 1 файл, а каталог, то тело цикла изменится
Код: @echo off

setlocal enabledelayedexpansion
set FromCopy="C:\Program Files\fromfile.txt"

for %%d in (c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z) do echo F | xcopy /C /Y /I /E %FromCopy% %%d":\tofile.txt"
Автор: ShadovZVV
Дата сообщения: 21.06.2011 11:42
Добрый день! А можно ли написать vbs или bat, для проверки версии ОС и версии SP на рабочих станциях домена, с выводом в txt-файл на шару?
Автор: Alukardd
Дата сообщения: 21.06.2011 12:32
ShadovZVV
Вот то, что вы просили, но при таком раскладе вам придется применять фильт uniq для нормального чтения... Я бы вам рекомендовал делать немного по другому.
Ваш вариант
Код: @echo off

For /F "Skip=2 Tokens=2,*" %%A In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /V ProductName') Do Set OSver=%%B
For /F "Skip=2 Tokens=2,*" %%A In ('Reg Query "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /V CSDVersion') Do Set SPver=%%B
for /F "tokens=2 delims=:" %%i in ('ipconfig ^| findstr "IP "') do @SET IP=%%i

echo %ComputerName% - %IP% - %OSVer% - %SPVer% >> \\server\share\log.txt
Автор: firsteducation
Дата сообщения: 21.06.2011 20:18
Alukardd ты выражения подбирай, я с тобой вежливо разговариваю, а ты как баба истиришь, я тоже могу выражаться, и поверь тебе это не понравится, попей успокоительное.
ps это я скорей твою мать!!! идиот!
Автор: Alukardd
Дата сообщения: 21.06.2011 20:28
firsteducation
Выражения более чем культурные.

По существу: вы получили то, что хотели или мы дальше будем в каждом новом посте выяснять животрепещущие подробности ваших желаний на тему?
Или же на этой весёлой ноте наша беседа закончилась?)

Цитата:
попей успокоительное
да это я после успокоительного...
Автор: firsteducation
Дата сообщения: 23.06.2011 21:08
Лады Alukardd, ток нестоит грубить, проехали, кажись нашёл я способ:

setlocal enabledelayedexpansion
for %%d in (i) do dir %%d:>nul 2>&1 && set zz=!zz!,%%d
echo %zz%
if %zz%==i echo yes!
else echo no disc
Автор: firsteducation
Дата сообщения: 25.06.2011 13:12
кто нибудь может подсказать почему вылазит ошибка: "непредвиденное появление goto" в этом скрипте:

@echo off
setlocal enabledelayedexpansion
for %%d in (i) do dir %%d:>nul 2>&1 && set zz=!zz!,%%d
if %zz%==0 goto sad2
@echo yes it work!
:sad2
@echo no disc
pause
Автор: YNY
Дата сообщения: 25.06.2011 15:57
firsteducation
for %%d in (i) do dir %%d:>nul 2>&1 && set zz=!zz!,%%d
а что тут у тя такое? ты это сам наворатил???
For .. in() подразумевает что в () множество значений по которым идет перебор
зачем %%d:>nul 2>&1?
в 2 содержится описание и сообщение ошибки.
2>&1 -- ваще бред.
zz содержит !zz!,i т.о. дальнейшее условие ваще никогда не выполнится!
Автор: vlary
Дата сообщения: 25.06.2011 16:09
firsteducation Здесь тема не для разбора синтаксиса скриптов, а для вопросов их эффективного применения в системном контексте.
На "кошечках" тренируются здесь:
Задачи на bat-файлах

Автор: firsteducation
Дата сообщения: 25.06.2011 18:33
YNY здорово, нет это я с форума слямзил, потом поменял кое где, и вот вроде работает:

@echo off
setlocal enabledelayedexpansion
for %%d in (i) do dir %%d:>nul 2>&1 && set zz=!zz!,%%d
if "%zz:~1,1%"=="i" goto q1
@echo no disc
pause
exit
:q1
@echo %zz:~1,1%
pause
exit
Автор: me2k
Дата сообщения: 18.07.2011 20:05
Есть у кого-то\видел кто-то готовый скрипт по заихиванию в AD в поле дискришен, у компьютера, последнего пользователя который залогинен?
Автор: Alukardd
Дата сообщения: 18.07.2011 21:34
me2k
Плохо ищите!
Уже начал сам писать для вас (интересно стало), в ходе писанины искал справку различную - Ссылка
Автор: user5nov
Дата сообщения: 05.08.2011 14:12
Здравствуйте, возникла небольшая проблемка. 40 пользователей 1С, хотелось бы раздать файл ibases.v8i всем пользователям в терминале.
Написал скрипт cmd:
@echo off
Copy /Y \\server\NETLOGON\ibases.v8i %userprofile%\AppData\Roaming\1C\1CEStart"
@exit

Пользователи заходят на сервер терминалов.
Бага в том что при логине пользователя файл всегда перезаписывается. Возможно как-то сделать проверку на наличие этого файла в профиле?, тобишь если есть файл, то не трогать, если нету то скопировать.
Плиз, Помогите его доработать, если это возможно.
Спасибо.
Автор: attaattaatta
Дата сообщения: 06.08.2011 08:58

Цитата:
@echo off
If not exist %userprofile%\AppData\Roaming\1C\1CEStart\ibases.v8i Copy /Y \\server\NETLOGON\ibases.v8i %userprofile%\AppData\Roaming\1C\1CEStart"
@exit

Автор: user5nov
Дата сообщения: 08.08.2011 13:21
attaattaatta
почему-то неработает, при входе под новым пользователем, файл не коипуется, если удалить его вручную ibases, и запустить скрипт то всё в порядке. Возможно из за того что изначально не создаётся папка 1С
Видимо в скрипте нужно добавить команду на создание папки.

Правильно ли теперь выглядит?

@echo off
mkdir "%userprofile%\AppData\Roaming\1C\1CEStart\"
If not exist "%userprofile%\AppData\Roaming\1C\1CEStart\ibases.v8i" Copy /Y "\\server\NETLOGON\ibases.v8i" "%userprofile%\AppData\Roaming\1C\1CEStart"
@exit

Страницы: 1234567891011

Предыдущая тема: Не Работает сканер по сети HP 3055


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