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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
K2D



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

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



Убью Билла
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
K2D - скрипт ОДИНАКОВ. Просто имя юзера переименуй с Администратор на Administrator. (можно работать вообще с SID - S-1-5-32-544 но объяснять что это и как юзать мне лениво. Удобнее тем, что работает и с переименованными аккаунтами первого администратора)

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



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
kibkalo
 
Так а на что это повлияет? На то что я смогу юзать скрипты с удаленной машины на этой?
Или на то что я вообще смогу юзать скрипты на машине , на которой я включил эти два ключика? И вообще , я не могу понять, про какое понятие Remote  идет речь, про удаленный комп вне локалки, тоесть из мира, или про удаленный комп любой, даже который находится в пределах локальной сети?

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



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kibkalo
 
Видишь в чем дело скрипт то есть но необходимо чтобы он мог понимать русская или английская винда т.к. компов 1000 и нужно его просто запихать в logon.  
 
Option Explicit
'On Error Resume Next
Dim strComputer
Dim objUser
strComputer = "имя_компа"
Set objUser = GetObject("WinNT://" & strComputer & "/Administrator,user")
objUser.SetPassword "1q2w3e4r5t"
objUser.SetInfo

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



Убью Билла
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ptrovich - с машины А скриптовать машину Б при отсутствии файервола и наличии маршрутизируемого доступа
 
K2D - политикой скрипт применишь ко всем компам. вместо имени компа везде юзай точку "."  а про использование SID вместо имени юзера я уже намекал выше, больше не буду.

Всего записей: 2342 | Зарегистр. 10-04-2002 | Отправлено: 09:34 29-09-2004
Jovanotti



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kibkalo
насчет SID  не думаю что так все просто  
S-1-5-32-544   это ведь только группа локальных админов
а сам локальный админ
S-1-5-21-3579355071-3158467609-758797834-500  
  Я сам парился со сменой пароля в зависмимости от имени админа  
   ничего лучше чем использование формы запроса на указание ИМЕНИ ПОЛЬзователя  
    не нашел
 
  ------- часть кода   ------    ---------   ---------
username = InputBox(Message3,Title,"", 6000, 6000)
If username = "" Then
WScript.Echo Text1
WScript.Quit
Else
End If
 
pass = InputBox(Message,Title,"", 6000, 6000)
' Evaluate the user input
If pass = "" Then ' Canceled by the user
WScript.Echo Text1
WScript.Quit
Else
WScript.Echo Text2 + pass
End If
 
Set objUser = GetObject("WinNT://" & strComputer & "/" & username & ",user")
objUser.SetPassword pass
objUser.SetInfo
 
------------   -------------   ---------------   -------------------
 
 
На сам понимаешь это   не совсем  автоматизазированно  ,    
хотя гибкое решение  ---   можно  менять   пароль ЛЮБОГО пользователя
Насчет SIDа   ----   попробовал вместо имени загнать просто SID  юзера  ничего не вышло  
выкинуло ошибку в строке    
Set objUser = GetObject("WinNT://" & strComputer & "/" & username & ",user")  
 

Всего записей: 718 | Зарегистр. 22-12-2002 | Отправлено: 10:05 29-09-2004
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

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



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

Всего записей: 554 | Зарегистр. 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 | Цитировать | Сообщить модератору
а так чтоб без лишних вопросов - типа "добавить ли значение или не добавлять ?"
 
просто хочу всем юзерам в домене разом установить стартовую страницу внутреннего сайта, лишние вопросы не нужны

Всего записей: 554 | Зарегистр. 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
   

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru