скрипты для AD

Запись создана 12 марта, 2008

примеры скриптов из книги Inside Active Directory (авт. Sakari Kouti and Mika Seitsonen)

insideadsamples.zip

» Запись из раздела windows | Комментировать

VB скрипт который проводит сбор информации о доменных компьютерах.

Запись создана 12 марта, 2008

Весьма занятный скриптик, может пригодиться для инвентаризации.
[cc lang=»vb»]
dim strclass, objAD, obj
dim invdate
dim constmb, constgb, sizegb
dim compname, temp, compad
constmb=1048576
constgb=1073741824
strclass = array( «win32_ComputerSystem», «win32_bios», «win32_processor»,_
«win32_diskdrive», «win32_videocontroller», «win32_NetworkAdapter»,_
«win32_sounddevice», «win32_SCSIController», «win32_printer»)

set objAD=getobject(«LDAP://CN=Computers,DC=akos-nissan,DC=local»)
objAD.filter=array(«computer»)
on error resume next
for each obj in objAD
CompAD=right(obj.name, len(obj.name)-3)
invdate = date
temp=»«+chr(10)+»Дата сбора: » & invdate & «

«+chr(10)
compname=»»
‘ on error resume next
set objWMIService = GetObject(«winmgmts://»&CompAD&»/root\cimv2″)
i=0
s=0
d=0
q=0
‘ sizegb=»»
for a=0 to 8
Set colitems = objwmiservice.instancesof(strclass(a))
for each objitem in colitems
select case a
case 0
temp=temp+»

» + chr(10)
temp=temp+»

«+chr(10)
temp=temp+»

» + chr(10)
temp=temp+»

«+chr(10)
temp=temp+»

» + chr(10)
temp=temp+»

«+chr(10)
compname=objitem.name
case 1
temp=temp+»

«+chr(10)
temp=temp+»

«+chr(10)
temp=temp+»

«+chr(10)+»

»
temp=temp+»

«+chr(10)
case 2
s=s+1
temp=temp+»

«+chr(10)+»

«+chr(10)+»

»
temp=temp+»

«+chr(10)
case 3
i=i+1
temp=temp+»

«+chr(10)+»

«+chr(10)+»

» + chr(10)
temp=temp+»

«+chr(10)
case 4
temp=temp+»

«+chr(10)+»

«+chr(10)+»

»
temp=temp+»

«+chr(10)
case 5
if objitem.adaptertypeid=0 and objitem.netconnectionstatus=2 then
temp=temp+»

«+chr(10)+»

«+chr(10)
temp=temp+»

»
temp=temp+»

«+chr(10)
end if
case 6
temp=temp+»

«+chr(10)+»

«+chr(10)
temp=temp+»

«+chr(10)
case 7
temp=temp+»

«+chr(10)+»

«+chr(10)
temp=temp+»

«+chr(10)
case 8
d=d+1
temp=temp+»

«+chr(10)+»

«+chr(10)+»

»
temp=temp+»

«+chr(10)
end select
next
next
‘Заключительная часть
temp=temp+»

»
temp=temp+»Имя компьютера»+»
«+objitem.name+ «
»
temp=temp+»Оперативная память»+»
«+cstr(round(objitem.totalphysicalmemory/constmb))+ » MB
»
temp=temp+»Модель компьютера»+»
«+objitem.model+ «
»
temp=temp+»Материнская плата»+»
«+objitem.SMBIOSBIOSVersion+»
»
temp=temp+»BIOS»+»
» + objitem.caption+» «+chr(10)+»
»
temp=temp+»Процессор»+cstr(s)+»
«+objitem.name+» Частота «+cstr(objitem.CurrentClockSpeed)+chr(10)+»
»
if objitem.size > 0 then ‘ = nill then
sizegb=cstr(round(objitem.size/constgb,2))
else
sizegb=cstr(0)
end if
temp=temp+»Жесткий диск «+cstr(i)+»
«+objitem.model + » » + sizegb + » GB
»
temp=temp+»Видеоконтролер»+»
«+objitem.caption+chr(10)+»
»
temp=temp+»Сетевой адаптер»+»
«+objitem.name+chr(10)+»
»
temp=temp+»Звуковая карта»+»
«+objitem.caption+chr(10)+»
»
temp=temp+»SCSI Адаптер»+»
«+objitem.manufacturer+» «+objitem.caption+chr(10)+»
»
temp=temp+»Принтер «+cstr(d)+»
«+objitem.name+chr(10)+»

»
‘Запись файла
Dim fso, tf
Set fso = CreateObject(«Scripting.FileSystemObject»)
Set tf = fso.CreateTextFile(«»&compname&».htm», True)
tf.Write (temp)
tf.Close
next
[/cc]

» Запись из раздела windows | Комментировать

скрипт ротации log-ов и backup-ов для windows

Запись создана 12 марта, 2008

[cc lang=»vb»]
‘==========================================================================

‘ VBScript Source File — Created with SAPIEN Technologies PrimalScript 3.1

‘ NAME: remlogs.vbs

‘ AUTHOR: Подлячок
‘ DATE : 19.06.2005

‘ COMMENT: Скриптик для автоматического удаления log-ов и backup-ов, срок актуальности которых истек.
‘ Срок после которго данный лог или бэкап вам уже точно не понадобиться определяется только вашим
‘ гражданским самосознанием, исходя из принципов разумности и политики вашей организации.
‘==========================================================================

‘Объявляем пременные
Dim Fso,File,BackupFolder,backupFiles,PathName,Result,Name,Output
Dim Counter,CurrentDate,FileDate,WshShell,a,str
‘Инициализируем переменные
Counter=0
PathName=»нужная вам папочка»
‘Получаем значение текущей даты
CurrentDate=Date

‘Создаем объекты: WScript.Shell и Scripting.FileSysemObject
Set WshShell=WScript.CreateObject(«WScript.Shell»)
Set Fso=WScript.CreateObject(«Scripting.FileSystemObject»)
‘Получаем объект — нужная нам папка
Set BackupFolder=Fso.GetFolder(PathName)
‘Получаем коллкцию объектов типа «File» из нужной папки
Set backupFiles=BackupFolder.Files
‘ Цикл. Для каждого обекта-File из коллекции обектов — Files
For Each File In backupFiles
‘Получаем дату зоздания файла
FileDate=File.DateCreated
‘Получаем период между датой создания файла и текущей датой
Result=CurrentDate-FileDate
‘Если период между датой создания файла и текушей датой больше заданного значения, то
‘удаляем файл и формируем строку, которую будем писать в лог-файл и строку которую мы будем выводить в наше сообщение
‘(можно не формировать строку здесь и далее это сделанно для наглядности).
If Result>Количество дней после которого файлы будут удаляться Then
Counter=Counter+1
str=Str + «Был удален файл» & File.Name & » » & CurrentDate & VbCrLf
Name=Name & File.Name & VbCrLf
File.Delete
end If
Next
‘Открываем файл log.txt на запись (опционально)
Set a=Fso.OpenTextFile(«c:\log.txt»,2,False)
‘Записываем туда сформированную в цикле строку (опционально)
a.WriteLine(Str)
‘Закрываем файл (опционально)
a.Close
‘Выводим окно сообщения о том какие файлы мы удалили (опционально)
Output=MsgBox(«Было удаленно » & Counter & » файл(а/ов)» & vbCrLf & Name,64, «Output Box»)
[/cc]

» Запись из раздела windows | Комментировать

User must change password on next logon

Запись создана 12 марта, 2008

[cc lang=»bash»]
‘скрипт рекурсивно устанавливает всем пользователям домена атрибут «User must change password on next logon»
‘для корректной работы необходимо в переменной strMyDomain определить имя домена с точки зрения LDAP —
‘т.е. все точки заменить на «DC=». Таким образом, домен argo.com превращается в DC=argo,DC=com
‘в переменную strMyOU необходимо поместить наименование Organization Unit`а, юзеров которого необходимо подвергнуть
‘процедуре изменения пароля.

Dim strMyOU
Dim strMyDomain

Dim objOU, objUser
Dim strContainer, strLastUser

strMyOU = «argo»
strMyDomain = «DC=argo,DC=com»

sub recurs(ou)
strContainer = «OU=»+ou+»,» + strMyDomain
set objOU = GetObject(«LDAP://» & strContainer )
For each objUser in objOU
strLastUser = objUser.Get («name»)
If objUser.Class=»organizationalUnit» Then
recurs(strLastUser+», OU=»+ou)
Elseif objUser.Class=»user» Then
objUser.Put «pwdLastSet», 0
objUser.SetInfo
end if
next
end Sub

recurs strMyOU

WScript.Quit
[/cc]

» Запись из раздела Несортированное | Комментировать

массовое добавление пользователей из екселевской таблички

Запись создана 12 марта, 2008

[cc lang=»vb»]// массовое добавление пользователей из екселевской таблички
// структора таблички:
// Фамилия Имя Отчество Логин Должность Отдел Предприятие Телефон

Set objExcel = CreateObject(«Excel.Application»)
Set objWorkbook = objExcel.Workbooks.Open _

// из какой таблички
(«D:\excel.xls»)

intRow = 1

Do Until objExcel.Cells(intRow,1).Value = «»

// куда добавляем, домен и юнит
Set objOU = GetObject(«LDAP://OU=management,dc=domain,dc=name»)

Set objUser = objOU.Create _
(«User», «cn=» & objExcel.Cells(intRow, 1).Value & » » & objExcel.Cells(intRow, 2).Value & » » & objExcel.Cells(intRow, 3).Value)
objUser.sAMAccountName = objExcel.Cells(intRow, 4).Value
objUser.GivenName = objExcel.Cells(intRow, 2).Value
objUser.SN = objExcel.Cells(intRow, 1).Value
objUser.displayName = objExcel.Cells(intRow, 1).Value & » » & objExcel.Cells(intRow, 2).Value & » » & objExcel.Cells(intRow, 3).Value

// какой домен им ставить
objUser.Put «userPrincipalName», (objExcel.Cells(intRow, 4).Value & «@domain.name»)
objUser.Put «title», objExcel.Cells(intRow, 5).Value
objUser.Put «department», objExcel.Cells(intRow, 6).Value
objUser.Put «Company», objExcel.Cells(intRow, 7).Value
‘ objUser.Put «TelephoneNumber», objExcel.Cells(intRow, 8).Value

objUser.SetInfo
intRow = intRow + 1
Loop

objExcel.Quit
[/cc]

» Запись из раздела windows | 1 комметарий

Как в Linux перебросить соединение через NAT во внутреннюю сеть

Запись создана 12 марта, 2008

Первый путь – пробрасывание только порта:
[cc lang=»bash»]iptables -t nat -A PREROUTING -p tcp -d EXT_R_IP —dport 10000 -j DNAT —to-destination LOCAL_IP:80
iptables -A FORWARD -i eth0 -d LOCAL_IP -p tcp —dport 22 -j ACCEPT[/cc]

Второй вариант – выброс всей машины наружу (если есть свободные адреса):
[cc lang=»bash»]ifconfig eth0:0 NEW_IP netmask NETMASK broadcast BROADCAST
route add NEW_IP gw GW netmask 0.0.0.0 metric 1 dev eth0:0
iptables -t nat -A PREROUTING -p tcp -d NEW_IP -j DNAT —to-destination LOCAL_IP
iptables -A FORWARD -i eth0 -d LOCAL_IP -j ACCEPT
[/cc]
Обозначения: EXT_R_IP – внешний IP роутера, LOCAL_IP – внутренний IP машины, которую хочешь выбросить
NEW_IP – новый IP на который хочешь посадить машину, которая имеет локальный LOCAL_IP NETMASK, BROADCAST, GW – внешние netmask, broadcast и gateway

» Запись из раздела networking, Unix | 2 комментария

крякозябры в диалогах виндовых программ в wine

Запись создана 12 марта, 2008

Если в диалогах программ, запущенных под wine, крякозябры следует сделать следующее:

1. создать в домашнем каталоге пользователя подкаталог .fonts и скопировать в него TTF-шрифты из windows.

2. в консоли выполнить команду fc-cache /.fonts

Шрифты станут доступны всем вновь запущенным приложениям.

» Запись из раздела Unix | 4 комментария

Потоковый аудио и видео сервер под linux.

Запись создана 12 марта, 2008

Потоковый аудио и видео сервер под linux.

читать о том как сделать интернет радио, здесь: Потоковый аудио и видео сервер под linux.

От себя добавлю, очень понравился darvin от aple. Есть под большинство платформ, работает на ура, управление через web.

» Запись из раздела Unix | Комментировать

Оповещение по почте о входе в консоль

Запись создана 12 марта, 2008

необходимо добавить в конец файла .bash_profile в пользовательской директории эту строку:

[cc lang=»bash»]echo ‘ALERT — Root Shell Access on:’ `date` `who` | mail -s «Alert: Root Access from `who | awk ‘{print $6}’`» user@dom.dom [/cc]

» Запись из раздела Unix | 1 комметарий

бакапим и ресторим базу MySQL

Запись создана 12 марта, 2008

Делаем дамп:
[cc lang=»bash»]
# mysqldump —add-drop-table —host=localhost —user=root —password=111 basename > basename.sql
[/cc]

Ресторим базу из дампа:
[cc lang=»bash»]
# mysql —host=localhost —user=root —password=111 —default-character-set=cp1251 basename < basename.sql [/cc]

» Запись из раздела MySQL, Unix | Комментировать

« предыдущая страницаследующая страница »