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

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

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

emx (13-12-2006 21:07): http://forum.ru-board.com/topic.cgi?forum=8&topic=19088#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

ooptimum



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

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


Часть 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 подобный скриптовый язык с исходниками

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

 
>>HOW -  TO:
Создается по материалам данного топа

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

 

Всего записей: 2898 | Зарегистр. 30-05-2002 | Отправлено: 08:55 13-12-2002 | Исправлено: FreemanRU, 17:29 11-12-2006
kibkalo



Убью Билла
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Jovanotti - намекну тебе немного - благо ты обычно понимаешь..
Локального администратора (первого) нельзя удалить из группы администраторов (хотя можно и юзера и группу переименовать). НО! У группы есть свойство MEMBERS.
Циклом берем всех Members и делаем их сначала Remove из группы потом Add в нее назад в цикле. Разумеется с TRY, CATCH, FINALLY на C#
Соответственно, когда ты пытаешься Remove переименованного администратора ты влетаешь в Catch (exception e) и там сбрасываешь ему пароль.
Уловил?
 
Добавлено
У меня есть предложение для продвинутых администраторов попробовать перейти с написания скриптов на VBScript на C#. Это реально стабильнее (ловим ошибки - exceptions), производительнее и намного более читаемо. К тому же функциональность намного больше.
Начну сам постить. Первый скрипт это то, чего многим администраторам крупных компаний не хватает - если ваш техсаппорт вводит компы в домен, но не раскидывает аккаунты компов по OU, а оставляет их в дефолтовом контейнере Computers, то для админа это головная боль, ибо к контейнеру отдельных политик не применишь, получается что к тем компам не применяются политики нужные подразделениям, а только общедоменные. Итак возникает вопрос, как бы отловить уродов, которые это не делают и надавать по шапке? Ясно что у объекта компутер есть owner, однако если там сотни объектов, то не станешь делать руками - нужно что-то автоматизировать. Благо в .NET Framework 2.0 (и соответственно в Visual Studio .NET 2005 - в частности в экспресс версии) появилась возможность опрашивать параметр ObjectSecurity - чем я сразу и воспользовался. Вот ниже скрипт. Компилять в Visual C# 2005
 

Цитата:
#region Using directives  
 
using System;  
using System.Collections.Generic;  
using System.ComponentModel;  
using System.Data;  
using System.Drawing;  
using System.Text;  
using System.Windows.Forms;  
using System.IO;  
 
#endregion  
 
namespace ListComputerOwners  
{  
partial class Form1 : Form  
{  
private DataTable dt;  
public Form1()  
{  
InitializeComponent();  
List();  
}  
public static void Main()  
{  
Application.Run(new Form1());  
}  
private void ConstructorTable()  
{  
this.dt = new DataTable();  
DataColumn dc1 = new DataColumn("PC");  
dc1.DataType = Type.GetType("System.String");  
DataColumn dc2 = new DataColumn("Owner");  
dc2.DataType = Type.GetType("System.String");  
dt.Columns.Add(dc1);  
dt.Columns.Add(dc2);  
this.dataGridView1.DataSource = dt;  
}  
private void List()  
{  
this.Text = "OU=Computers,DC=my,DC=domain,DC=ru";  
System.DirectoryServices.DirectoryEntry entry = new System.DirectoryServices.DirectoryEntry("LDAP://OU=Computers,DC=my,DC=domain,DC=ru");  
foreach (System.DirectoryServices.DirectoryEntry result in entry.Children)  
{  
try  
{  
System.Security.Principal.NTAccount acc = (System.Security.Principal.NTAccount)(result.ObjectSecurity.GetOwner(Type.GetType("System.Security.Principal.NTAccount")));  
DataRow dr=this.dt.NewRow();  
dr[0]=result.Name;  
dr[1]=acc.Value;  
this.dt.Rows.Add(dr);  
}  
catch  
{  
DataRow dr = this.dt.NewRow();  
dr[0] = result.Name;  
dr[1] = "[]";  
this.dt.Rows.Add(dr);  
}  
}  
this.dt.AcceptChanges();  
}  
}  
}


Всего записей: 2342 | Зарегистр. 10-04-2002 | Отправлено: 11:26 30-09-2004
distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kibkalo
смысла не вижу переходить на c#
у него есть ровно одно преимущество - поддержка gui
а администраторам - gui - разве надо надо?
а вот минусов есть:
- надо .net framework (20mb)
- надо компилировать
- для компиляции как ты сам сказал, необходим .net аж версии 2.0 и vs 2005 ))
а гдеж его взять-то? да и нет его еще...
 
итог: на wsh+jscript синтаксис почти тот-же (а не этот уродский vbscript), и делать можно все тоже самое. единственное неудобство - отсутствие модульности (решается инклудом в wsf-файл или созданием компонента)
 
вот когда .net будет по-дефолту распространяться с OS, вот тогда...

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 12:51 30-09-2004
K2D



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не ребята самые удобные для админа это VBScript и JScript. Очень все просто и исполняется на ура.

Всего записей: 42 | Зарегистр. 08-09-2004 | Отправлено: 13:30 30-09-2004
kibkalo



Убью Билла
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
distance - во первых я не зря указал, что оно для продвинутых админов. начинать с него не стоит. фреймворк есть по умолчанию уже везде (или ты живешь в НТ4 или 9х?) фреймворк 2.0 и студия 2005 нужны ТОЛЬКО для необходимости работы с owner'ом объекта и правами. На бейсике оно не реализуемо.
.NET 1.0 включен в ХР, 1.0 сп2 в ХР сп1а, 1.1 в 2003, 1.1 сп1 в ХРсп2  
K2D - про просто читай выше. А вот не дай бог твои скрипты кому-то еще придется править. Когда проекты разрастаются и появляется команда администраторов, вб вводит в ужас.
 
И разумеется в вб очень тоскливо с обработкой ошибок
Вот например как выглядит нормальный скрипт поиска специфического юзера в домене по такому параметру, как указанный в AD номер пейджера. (разумееется раз я объект нашел, могу сразу его менять)
 

Цитата:
using System;
using System.Data;
using System.Data.OleDb;
 
class Test_ActiveDirectoryConnection
{
static void Main(string[] args)
{
const int pager_number = 1234;
OleDbConnection objConnection = new OleDbConnection("Provider=ADsDSOObject");
try
{
objConnection.Open();
Console.WriteLine("Connection to Active Directory established successfully !");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}

string objQuery = "Select Name, displayName, pager from 'LDAP://OU=Company,DC=my,DC=domain,DC=ru' " + "where objectCategory = 'CN=Person,CN=Schema,CN=Configuration,DC=my,DC=domain,DC=ru' and pager = '" + pager_number.ToString() + "'";
OleDbCommand objCommand = new OleDbCommand(objQuery , objConnection);
OleDbDataAdapter objAdapter = new OleDbDataAdapter(objCommand);
DataSet objDataSet = new DataSet();
try
{
OleDbDataReader objReader = objCommand.ExecuteReader();
while (objReader.Read())
{
Console.WriteLine(objReader.GetValue(0) + " , " + objReader.GetValue(1) + " , " + objReader.GetValue(2));
}
}
catch (Exception ex)  
{
Console.WriteLine(ex.Message);
}  
finally
{
objCommand.Dispose();
objConnection.Close();
objConnection.Dispose();    
}
}
}

 
Еще раз замечу - C# максимально удобен админам крупных сетей, а не новичкам, которые и в вб то теряются

Всего записей: 2342 | Зарегистр. 10-04-2002 | Отправлено: 15:42 30-09-2004
Ptrovich



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

Всего записей: 125 | Зарегистр. 26-01-2003 | Отправлено: 09:12 04-10-2004
K2D



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
И все таки дайте подсказку как поступить чтобы можно одним скриптом и в англ. и в русской менять.
 
Option Explicit  
'On Error Resume Next  
Dim strComputer  
Dim objUser  
strComputer = "имя_компа"  
Set objUser = GetObject("WinNT://" & strComputer & "/Administrator,user")  
objUser.SetPassword "1q2w3e4r5t"  
objUser.SetInfo
 
 
Ptrovich попробуй эту ссылку   http://www.microsoft.com/downloads/details.aspx?displaylang=en&familyid=b4cb2678-dafb-4e30-b2da-b8814fe2da5a

Всего записей: 42 | Зарегистр. 08-09-2004 | Отправлено: 10:50 04-10-2004
amitophia

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

Цитата:
насчет SID  не думаю что так все просто  
S-1-5-32-544   это ведь только группа локальных админов  
а сам локальный админ  
S-1-5-21-3579355071-3158467609-758797834-500

зато RID у него всегда 500, а в  начале S-1-5-21
Можно взять SID любого локального юзера и заменить RID на 500.
 
K2D
Ведь имя админа может быть любым. И на аглицкой XP его можно сделать Администратор, (а на немецкой вообще какой-нибудь Das Administrator )
ИМХО с SIDом вариант стабильнее (думаю, по SIDу несложно получить имя юзера)

Всего записей: 1083 | Зарегистр. 13-01-2003 | Отправлено: 00:33 05-10-2004 | Исправлено: amitophia, 00:35 05-10-2004
K2D



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я разобрался сам ,уже давно, как сделать чтобы мог понимать русскую и английскую Винду , но хотел посмотреть примеры может кто тоже етим занимался. А на счет СИДА неочень удобно, У меня скрипт заливается через политики на каждый OU. Например в AсtiveDirectory создан OU програмисты и все их компы занесены туда их 20шт. и есть OU бухгалтера их 10 шт., я через политику устанавливаю logon скрипт , т.е у каждого компа в OU пароль локального админа свой и я его знаю могу поменять в любой момент вот и все... И когда появляются новые компы(которые нам привозят черт знает откуда) проблем с паролями лок.админа нет.

Всего записей: 42 | Зарегистр. 08-09-2004 | Отправлено: 11:36 05-10-2004 | Исправлено: K2D, 11:38 05-10-2004
Raredemon



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
2 all
Вопрос интересный возник, может кто поможет....
Предыстория: долгое время не обслуживаемый толком домен....  
Задача: проверить соответствие юзеров в OU, списку юзеров секьюрити группы соответствующей данному OU.
Пример: OU - Administration, SG - Administration, user - Vasya заведен в OU - Administration, входит ли он в SG - Administration?
Можно конечно руками, но когда SG несколько десятков, а юзеров несколько сотен, крышу сорвет пока проверишь... причем это надо сделать как-то более по "нашему" методу и потом делать это регулярно....
Если кто поможет буду очень признателен....

----------
Designed for Windows XP.
Powered by Gentoo!
Бесполезно рассказывать о высоком моральном облике коллектива человеку, имеющему доступ к логу прокси....

Всего записей: 1787 | Зарегистр. 03-09-2003 | Отправлено: 14:16 05-10-2004
Jovanotti



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Думаю это будет в тему ...
Аудит учетных записей пользователей в Active Directory

Всего записей: 720 | Зарегистр. 22-12-2002 | Отправлено: 10:21 06-10-2004
GTHack



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
можно ли скриптом установить стартовую страничку?

Всего записей: 560 | Зарегистр. 03-03-2003 | Отправлено: 10:16 07-10-2004
JcVai



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
GTHack
Легко - просто правь в реестре значение "Start Page" по адресу "HKCU\Software\Microsoft\Internet Explorer\Main"

Всего записей: 661 | Зарегистр. 27-10-2002 | Отправлено: 10:46 07-10-2004
GTHack



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
а так чтоб без лишних вопросов - типа "добавить ли значение или не добавлять ?"
 
просто хочу всем юзерам в домене разом установить стартовую страницу внутреннего сайта, лишние вопросы не нужны

Всего записей: 560 | Зарегистр. 03-03-2003 | Отправлено: 11:03 07-10-2004
Alan Mon

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вообще-то если у тебя домен, проще это сделать через GP.
Конфигурация пользователя\Конфигурация Windows\Поддержка Internet Explorer\Адреса URL\Важные адреса URL.
Правда, действует она только на Win2000, XP.

Цитата:
а так чтоб без лишних вопросов - типа "добавить ли значение или не добавлять ?"  

regedit /s

Всего записей: 1116 | Зарегистр. 22-07-2004 | Отправлено: 11:58 07-10-2004
AlexSSS

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GTHack
> можно ли скриптом установить стартовую страничку?
 
легко
смотришь, где она находится в реесте и скриптом прописываешь туда нужный адрес

Всего записей: 747 | Зарегистр. 26-06-2004 | Отправлено: 12:14 07-10-2004
GTHack



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
так и сделал, всем спасибо, жаль по 98м пришлось бегать вручную прописывать

Всего записей: 560 | Зарегистр. 03-03-2003 | Отправлено: 12:28 07-10-2004
distance

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kibkalo
к слову, на компе установлена Win2000, sp4
dotnet в комплект не входит
но так или иначе я собираюсь переползать на dotnet, по крайней мере на jscript.net
(хотя вроде бы и его тоже нужно компилировать)
насчет поиска в AD по номеру пейджера я бы не сказал что это типовая задача ))
но как демонстрация новых возможностей пример полезен. выборка из AD через sql-запрос - весьма неплохо, осознал я-то по старинке делаю - Filter, Enumerator...
было бы неплохо, если бы показал, какие ещё трюки можно делать "по-новому", а типовые примеры мы сами придумаем

Всего записей: 878 | Зарегистр. 28-03-2004 | Отправлено: 12:33 07-10-2004
AlexSSS

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
GTHack, а зачем вручную, если делать это через скрипт, то операционка уже неважна
 
кроме того
1. пользователь может сбросить домашнюю страницу
2. при посещении интернета можно случайно ткнуть на установку другой домашней страницы
и что, каждый раз будешь бегать прописывать нужные пути???
 
пример моего скрипта, который прописывает нужные параметры для IE. Правда, он на KIX-е, но идею понять легко
 
$path = "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings"
 
$err = WRITEVALUE($path, "EnableHttp1_1","00000001", REG_DWORD)
$err = WRITEVALUE($path, "ProxyEnable", "00000001", REG_DWORD)
$err = WRITEVALUE($path, "UrlEncoding", "00000001", REG_DWORD)
$err = WRITEVALUE($path, "ProxyOverride","10.0.*.*;<local>" , REG_SZ)
$err = WRITEVALUE($path+"\Cache", "Persistent","0",REG_DWORD)
 
 
Добавлено
для установки домашней страницы
 
$path = "HKCU\Software\Microsoft\Internet Explorer\Main"
$err = WRITEVALUE($path, "StartPage","www.yandex.ru" , REG_SZ)

Всего записей: 747 | Зарегистр. 26-06-2004 | Отправлено: 12:39 07-10-2004
GTHack



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
и как ты заставиш этот скрипт выполнится на 98ой ?
скрипт на логин в GP не проканает ...
 
Добавлено
... и еще -  как этот скриптец будет выглядеть на vbs
а то я в vbs не силен

Всего записей: 560 | Зарегистр. 03-03-2003 | Отправлено: 13:32 07-10-2004
JcVai



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

Код:
 
 
const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set StdOut = WScript.StdOut
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_  
strComputer & "\root\default:StdRegProv")
 
strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings"
oReg.SetStringValue HKEY_CURRENT_USER,strKeyPath,"Start Page","about:blank"
 

Всего записей: 661 | Зарегистр. 27-10-2002 | Отправлено: 14:25 07-10-2004 | Исправлено: JcVai, 14:27 07-10-2004
   

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования
emx (13-12-2006 21:07): http://forum.ru-board.com/topic.cgi?forum=8&topic=19088#1


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru