Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования. Часть 2

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

ShriEkeR (23-05-2011 23:06): Автоматизация администрирования. Часть 3  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114

   

FreemanRU



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
 

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


Часть 2я

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

 
    Внимание   !  !  !  

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

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

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

Windows Script Host (WSH) &  VBScript  &  JScript


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

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

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

 
Подробнее...
Создается по материалам данного топа

 
Надеюсь данная тема будет полезна для Вас.
 Предложения по реформированию шапки принимаю в ПМ Jovanotti

 

Всего записей: 3795 | Зарегистр. 16-07-2004 | Отправлено: 17:27 11-12-2006 | Исправлено: Smitis, 12:30 20-08-2008
mrmarvin

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите каким скриптом отключить сетевое подключение "подключение по локальной сети"  для windows xp ?

Всего записей: 92 | Зарегистр. 26-04-2005 | Отправлено: 15:34 20-06-2007
BULLDOG



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
  Народ, такая проблема. Хочу написать скрипт, который, на основании того, в каком OU расположен пользовател, автоматически перемещал компьютер из Computers в нужный OU.
   Вот скрипт, который перемещает компьютер в OU под именем PD01.  
 
On Error Resume Next
strComputer="."
strCompDN = "cn=Computers,dc=011,dc=087,dc=pfr,dc=ru"
arrComputers = Array("localhost")
For Each strComputer In arrComputers
   Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" _  
    & strComputer & "\root\cimv2")
   Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_NTDomain",,48)
   For Each objItem In colItems
    compname = CStr(objItem.Caption)
    compnamestr = "cn=" & compname & ","
    strOUDN = "ou=PD01,ou=UPFR11,dc=011,dc=087,dc=pfr,dc=ru"
    set objComp = GetObject("LDAP://" & compnamestr & strCompDN)
    set objOU = GetObject("LDAP://" & strOUDN)
    objOU.MoveHere objComp.ADsPath, objComp.Name
   next
next
 
  1) Этот скрипт работает только под администратором домена, хотелось бы, чтобы под любым пользователем.
  2) Компьютер перемещается только в OU с именем PD01. Местоположение пользователя не определяется (т.е. его PD**), приходится создавать групповую политику для каждого  PD** (хотя это уже пол беды).

Всего записей: 387 | Зарегистр. 29-08-2003 | Отправлено: 16:04 20-06-2007
Etalon

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ShafMAN
Если прсто из сценария утановить или разорвать соединение то
 
rasdial имя_подключения [имя_пользователя [{пароль|*}]] [/domain:домен] [/phone:номер_телефона] [/callback:номер_для_ответного_вызова] [/phonebook:путь_к_телефонной_книге] [/prefixsuffix]
 
rasdial [имя_подключения] /disconnect
 

Всего записей: 306 | Зарегистр. 03-02-2006 | Отправлено: 18:04 20-06-2007 | Исправлено: Etalon, 18:05 20-06-2007
YNY

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
  1) Этот скрипт работает только под администратором домена, хотелось бы, чтобы под любым пользователем.  

Интересно девки пляшут)))))). Может тебе ваще на 98 перейти? -- там ваще никаких проблем с правами не будет

Всего записей: 476 | Зарегистр. 18-05-2006 | Отправлено: 06:50 21-06-2007
BULLDOG



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YNY
Ты по нормальному разговаривать умеешь? Сам скрипт выполняется под любым аккаунтом, а вот компы двигаются только под администратором домена. Вернее не так. На моем компе даже под любым аккаунтом, а вот на остальных под теми же аккаунтами не двигаются.

Всего записей: 387 | Зарегистр. 29-08-2003 | Отправлено: 09:51 21-06-2007
mrmarvin

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите каким скриптом отключить сетевое подключение "подключение по локальной сети"  для windows xp ?

Всего записей: 92 | Зарегистр. 26-04-2005 | Отправлено: 10:41 21-06-2007
vlazari



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
набери netsh /?

Всего записей: 243 | Зарегистр. 20-09-2005 | Отправлено: 10:55 21-06-2007
Etalon

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mrmarvin
 
Computer = "."
Set WMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2")
 
' Выбираем нужный сетевой адаптер
Set NetAdapter = WMIService.ExecQuery _
    ("Select * from Win32_NetworkAdapter where Name='VIA Rhine II Fast Ethernet Adapter'")
 
' Отключаем сетевой адаптер (3 --- включить, 4 --- выключить)
NetAdapter.StatusInfo = 4
NetAdapter.Put_

Всего записей: 306 | Зарегистр. 03-02-2006 | Отправлено: 13:47 21-06-2007 | Исправлено: Etalon, 13:50 21-06-2007
DmyDry



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Народ, помогите.
Ещё не успел выучить vbs, но нужно позарез написать скрипт на запуск exe'шника с определенными ключами. Помогите кому не лень. В домене уже есть скрипты, я туда дописал, вроде бы правильно, прицеплен он к стартапу компов в ГП, но выполнение скриптов для машин идет невероятно долго и так и не выполняется, хотя если этот самый дописанный мною скрипт выполнять юзером, то все выполняется на ура... поэтому может подскажите, как написать короткий, только для этой задачи...

Всего записей: 159 | Зарегистр. 22-02-2007 | Отправлено: 14:35 21-06-2007 | Исправлено: DmyDry, 16:00 21-06-2007
AnteC

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vlazari

Цитата:
набери netsh /?

наверное Вы никогда не пытались это сделать в WinXp
тк на Win2K3 netsh interface set interface LAN disabled
работает а на WinXp нет (даже на форуме M$'а это пишут
 
Etalon

Цитата:
Computer = "."  
Set WMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2")  
 
' Выбираем нужный сетевой адаптер  
Set NetAdapter = WMIService.ExecQuery _  
    ("Select * from Win32_NetworkAdapter where Name='LAN'")  
 
' Отключаем сетевой адаптер (3 --- включить, 4 --- выключить)  
NetAdapter.StatusInfo = 4  
NetAdapter.Put_

 
Строка: 10
Символ: 1
Объект не поддерживает это свойство или метод:
NetAdapter.StatusInfo
 

Всего записей: 69 | Зарегистр. 05-02-2004 | Отправлено: 15:57 21-06-2007 | Исправлено: AnteC, 16:25 21-06-2007
Teo



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
На моем компе даже под любым аккаунтом, а вот на остальных под теми же аккаунтами не двигаются.

ну если ту себя сделал админом домена, то  что тут удивительного
насколько я знаю, двигать можно тока под админом, иначе любой дурак ТАК начнёт двигать, что заколебёшься вертать назад
 
Добавлено:
AnteC
http://softwarecommunity.intel.com/isn/Community/en-US/forums/permalink/30233496/30234118/ShowThread.aspx#30234118

Всего записей: 737 | Зарегистр. 21-04-2003 | Отправлено: 17:05 21-06-2007
DmyDry



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Никто шаблоном не поделится?

Всего записей: 159 | Зарегистр. 22-02-2007 | Отправлено: 17:13 21-06-2007
Teo



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DmyDry
    strDiskpartCmd = Chr(34) & "c:\windows\system32\diskpart.exe " & Chr(34) & "/s " & Chr(34) & "c:\Windows\Temp\cmd.txt" & Chr(34)
    WScript.Echo strDiskpartCmd
    WshShell.Run(strDiskpartCmd)

Всего записей: 737 | Зарегистр. 21-04-2003 | Отправлено: 19:40 21-06-2007
as2389



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вообщем такая задача. Нужно проверить все носители, у далить на тех, на которых возможно картинки в формате *.jpg которые были созданы после определённого дня. Написал вот такой скрипт. Если его запускать указав определённую букву диска, на котором записать пару папок с подпапками и туда раскидать картинки то скрипт работает на ура. Когда начал  запускать на VMware скрипт захлебунлся на моменте получения списка папок. fso.GetFolders - пишет недостаточно памяти в Sub Descend. Какие есть мысли? Как это можно обойти? Или принцип моего решения вообще не верный?

Код:
 
Dim fso, D, FileSys, drive
Dim objdrives  
Dim objDrive  
 
Age = 2
 
Set fso = CreateObject("Scripting.FileSystemObject")
Set objdrives = fso.Drives
For Each objDrive In objdrives
If objDrive.IsReady Then
'if  (objDrive.DriveLetter="H") then
        Set D = fso.GetDrive(objDrive.DriveLetter)
        FileSys = D.FileSystem  
If ((FileSys="NTFS") or (FileSys="FAT") or (FileSys="FAT32"))  then
       's = s & objDrive.DriveLetter & " - " & FileSys & vbCrLf
      call del(objDrive.DriveLetter)
        end if
'end if
end if
Next
 
 'MsgBox s
 
sub del(drive)
Set arg = WScript.Arguments
If arg.Count > 0 Then
    Call Descend(arg(0))
Else
drive2=drive+":"
    Call Descend(drive2)
End if
end sub
 
 
Sub ArcCheck(file)
    If DateDiff("d", file.DateLastModified, Now()) < Age Then
        'WScript.Echo "Файлы младше 2 дней: " & file.Name
        file.Delete(True)  
    Else
        'WScript.Echo "Файлы которые не будут удалены: " & file.Name
    End if
End Sub
 
 
Sub Descend(spec)
    Dim d, f, s
    Set d = fso.GetFolder(spec)
 
    For Each f In d.Files
        s = fso.GetExtensionName(f)
        If StrComp(s, "jpg", 1) = 0 Or StrComp(s, "jpeg", 1) = 0 Then
            Call ArcCheck(f)
        End if
    Next
' check subfolders
    For Each f In d.SubFolders
        Call Descend(f)
    Next
End Sub
 

 
закомментировал проверочные

Всего записей: 97 | Зарегистр. 11-09-2006 | Отправлено: 03:50 22-06-2007 | Исправлено: as2389, 06:53 22-06-2007
as2389



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хм запустил на своей машине всё работает, тога загрузка процессора 100% wscript.exe, как этого можно избежать?

Всего записей: 97 | Зарегистр. 11-09-2006 | Отправлено: 09:53 22-06-2007
abasov



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Сценарий сканирует указанные каталоги и
удаляет в нем файлы с указанными расширениями


Код:
 
Option Explicit
'err.raise 1, "Achtung!", "для запуска закоментировать строку генерации ошибки"
'1) Задать папки для поиска в массив aFolders, например "C:\","E:\"
'2) задать расширения файлов в массив aExtensions, например  "mp3","avi","wma"
'3) задать путь и файл для логирования LogFileName1 , например "d:\temp\i.txt"
'см. дальше по тексту...
 
 
'Сценарий сканирует указанные каталоги и
'удаляет в нем файлы с указанными расширениями
'
'
 Dim LogFileName1
 'dim NameFileOfMessage    
 dim TextOfMessage
 
Dim aFolders    'массив каталогов
Dim aExtensions    'массив расширений файлов
 
dim file1
dim FileOfMessage
 
'1) Задать папки для поиска в массив aFolders, например aFolders = Array("C:\","E:\")
aFolders = Array("D:\")
 
'2) задать расширения файлов в массив aExtensions, например  aExtensions = Array( "mp3","avi","wma")
aExtensions = Array(  "id","nsf")
 
Dim fso
 
 
'3) задать путь и файл для логирования LogFileName1 , например LogFileName1 = CStr("d:\temp\i.txt")
LogFileName1 = CStr("c:\Log_Delete_Incoming.txt")
 
'
'4) пункт убран
'
 
'5)текст сообщения, которое будет в файле в папке где был удалён файл
TextOfMessage = CStr("Администрация предупреждает: ")
 
 
Set fso = CreateObject("Scripting.FileSystemObject")
Set file1 = fso.OpenTextFile(LogFileName1,8,true)
 
Dim i
file1.WriteLine "----------- начало поиска --------------" & cstr(Date()) & "|" & cstr(Time())  
For i = 0 To UBound(aFolders)  
   If fso.FolderExists(aFolders(i)) Then
 on error resume next
 Err.Clear
 
     Dim folder
     Set folder = fso.GetFolder(aFolders(i))
     Dim file
     For Each file In folder.Files
   if Err then  
     file1.WriteLine "---> " & cstr(Date()) & "|" & cstr(Time()) &"!!! ->!Ошибка при доступе к папке!<- " &folder  
  exit for  
 End If
       If IsKnowExtensions(file) Then  
 
        Set FileOfMessage = fso.OpenTextFile(folder+"\"+file.name+".txt",8,true)
        FileOfMessage.WriteLine (TextOfMessage)
        FileOfMessage.WriteLine ("файл '"& file.name & "' изъят до выяснения обстоятельств...")
        FileOfMessage.close
        file.Delete True
       end if
   
 
     Next
     dim subFolder
     For Each subFolder In folder.SubFolders
  if Err then  
  exit for  
end if
       ScanSubFolder subFolder
     Next
 
 
   end if
Next
file1.WriteLine "----------- конец поиска --------------" & cstr(Date()) & "|" & cstr(Time())  
file1.close
 
 
Function IsKnowExtensions(file)
    Dim strExtensions
    strExtensions = fso.GetExtensionName(file.Path)
    Dim i
    For i = 0 To UBound(aExtensions) '- 1
        If ucase(strExtensions) = ucase(aExtensions(i)) Then
            'msgbox "!"
            file1.WriteLine (cstr(Date()) & "|" & cstr(Time()) &" был Удалён : " & file.Path  )  
 
            IsKnowExtensions = True
            Exit Function
        End If
    Next
    IsKnowExtensions = False
End Function
 
 
Sub ScanSubFolder(folder)
 
 Dim file
 on error resume next
 Err.Clear
 For Each file In folder.Files
    if Err then  
      file1.WriteLine "---> " & cstr(Date()) & "|" & cstr(Time()) &"!!! ->!Ошибка при доступе к папке!<- " &folder
 Err.Clear  
      exit sub
    end if    
    If IsKnowExtensions(file) Then  
 
      Set FileOfMessage = fso.OpenTextFile(folder+"\"+file.name+".txt",8,true)
      FileOfMessage.WriteLine (TextOfMessage)
      FileOfMessage.WriteLine ("файл '"& file.name & "' изъят до выяснения обстоятельств...")
      FileOfMessage.close
      file.Delete true
    end if
 Next
 Dim subFolder
 For Each subFolder In folder.SubFolders
   ScanSubFolder subFolder
 Next
End Sub
 

Всего записей: 345 | Зарегистр. 12-11-2002 | Отправлено: 10:20 22-06-2007
DmyDry



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Teo
 
Dim WshShell
     
strDiskpartCmd = Chr(34) & "\\connect\EVEREST\USER\everest.exe /ACCEPTBG /SILENT" & Chr(34) & "/s" & Chr(34) & "c:\Windows\Temp\cmd.txt" & Chr(34)
    WScript.Echo strDiskpartCmd
    WshShell.Run(strDiskpartCmd)
 
 
Вот так выглядит, но не пашет, пишет  
Требуется объект: "

Всего записей: 159 | Зарегистр. 22-02-2007 | Отправлено: 10:47 22-06-2007
as2389



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
abasov во первых твой пример не делает то что надо  мне, а именно самопоиск дисков определение файловой системы и поиск по ним файлов, я уже не говорю о сроке жизни файлов которые надо удалить. А  во вторых алгоритм поиска файлов тот же самый.

Всего записей: 97 | Зарегистр. 11-09-2006 | Отправлено: 12:28 22-06-2007
Etalon

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AnteC
 
Если Вы используете Windows Vista или Windows Server 2008 то должен работать метод
...
NetAdapter.Disable

Всего записей: 306 | Зарегистр. 03-02-2006 | Отправлено: 12:53 22-06-2007
Teo



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
DmyDry
не тупи...
я ж те дал свой пример
а ты его один-в-один почти перекопировал
у меня дискпарт запускается с ключиком /s
а у тебя что?
CHR(34)  - это кавычка
& - конкатенация строк (объединение)
поэтому у меня "длинный путь с пробелами к diskpart.exe" & "/s" & "длинный путь с пробелами к файлу ответов"
 
 
Добавлено:
abasov
боже... скока кода...
а в юнихе:
find /dir -iname *.ext -exec rm '{}' \;
 
разница, да?
 
Добавлено:
ну можна -Ntime добавить по вкусу, если надо убивать по критерию "старости"

Всего записей: 737 | Зарегистр. 21-04-2003 | Отправлено: 18:20 22-06-2007 | Исправлено: Teo, 18:24 22-06-2007
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования. Часть 2
ShriEkeR (23-05-2011 23:06): Автоматизация администрирования. Часть 3


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru