какой демон на каком порту
Запись создана 12 марта, 2008
Как определить какой демон на каком порту слушает?
В Linux так:
[cc lang=»bash»]# netstat -tnlp[/cc]
Во FreeBSD так:
[cc lang=»bash»]% sockstat [/cc]
» Запись из раздела networking, Unix | 1 комметарий
установка VerliHub (Linux)
Запись создана 12 марта, 2008
Нам понадобится:
1. Сам Verlihub, взять его можно здесь
2. GeoIP, взять можно здесь
3. MySQL server (в том числе и devel) и удобства ради phpMyAdmin
Ставим GeoIP:
[cc lang=»bash»]
# cd /usr/local/src/
# wget http://www.maxmind.com/download/geoip/api/c/GeoIP-1.4.0.tar.gz
# tar zxf GeoIP-1.4.0.tar.gz && cd Geo*
# ./configure
# make && make install
[/cc]
Ставим Verlihub:
[cc lang=»bash»]
# cd /usr/local/src/
# wget http://kent.dl.sourceforge.net/sourceforge/verlihub/verlihub-0.9.8c-RC2.tar.gz
# tar zxf verlihub-0.9.8c-RC2.tar.gz && cd verl*
# ./configure
# make && make install
[/cc]
Заходим в phpMyAdmin и создаём базу данных verlihub, пользователя verlihub и даём ему все права на базу verlihub. теперь запускаем скрипт инсталляционный:
[cc lang=»bash»]# /usr/local/bin/vh_install[/cc]
и отвечаем на все вопросы.
Готово! verlihub установлен, теперь создадим скрипт для запуска демона. Для этого создадим файл /etc/rc.d/init.d/rc.verlihub с содержимым:
[cc lang=»bash»]
#!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
# program name
PROG=verlihub
#program path
#DAEMON=/usr/local/bin/verlihub
DAEMON=/usr/local/bin/vh_runhub
# Do we pass options on the command line if yes put them here
DOPTION=»»
#Test if it is there if not lets bail
test -f $DAEMON || exit 0
case «$1» in
start) echo -n «Starting $PROG »
$DAEMON $DOPTION &
echo «Done.»
;;
stop) echo -n «Stopping $PROG »
killall $PROG
echo «Done.»
;;
restart) echo -n «Restarting $PROG »
killall $PROG
sleep 2
$DAEMON $DOPTION &
echo «Done.»
;;
*) echo «Usage: /etc/rc.d/rc.$PROG start|stop|restart»
exit 1
;;
esac
[/cc]
делаем его исполняемым и кладём в автозагрузку:
[cc lang=»bash»]
chmod +x rc.verlihub
ln -s /etc/rc.d/init.d/rc.verlihub /etc/rc.d/rc3.d/S90rc.verlihub
[/cc]
рекомендую к прочтению
» Запись из раздела Unix | 1 комметарий
скрипт показывающий имена пользоватлей не логинившихся в AD N-ное количество дней.
Запись создана 12 марта, 2008
[cc lang=»javascript»]
//~~Author~~. Paul stuart
//~~Email_Address~~. Paul.Stuart@schroders.com
//~~Script_Type~~. Jscript
//~~Sub_Type~~. DomainAdministration
//~~Keywords~~. ADSI, last login date, domain, login
//~~Comment~~.
//Create a report showing users who haven’t logged in to the Domain for X days or more.
//Requires ADSI 2.5 and Jscript version 5. The results are sent to LOGFILE.TXT
//~~Script~~.
var sDomain = «»; // enter your domain here.
var iCutOffDays = 0; // last login cut-off in days.
var TRUE = 1;
var ForReading = 1;
var ForWriting = 2;
var DAYMSECS = 86400000; // number of milliseconds in a day
var DomObj, CollObj, sSubDir;
var iNumUsers = 0;
var CutOff;
var WSHShell = new ActiveXObject(«WScript.Shell»);
var fs = new ActiveXObject(«Scripting.FileSystemObject»);
WSHShell.Popup(«Starting Last Log Report » );
CutOff = new Date();
CutOff.setTime( CutOff.valueOf() — iCutOffDays*DAYMSECS );
DomObj = GetObject(«WinNT://» + sDomain );
CollObj = new Enumerator(DomObj);
for ( ; !CollObj.atEnd(); CollObj.moveNext())
{
var Obj = CollObj.item();
if ( Obj.Class == «User» )
{
iNumUsers++;
try
{
if ( Obj.LastLogin < CutOff.valueOf() )
WriteLOG( Obj.name + " " + Obj.LastLogin );
}
catch( ErrorObj )
{
WriteLOG( Obj.name + " has never logged in" );
}
}
}
WriteLOG("Total number of users is " + iNumUsers );
WSHShell.Popup("Finished");
WScript.Quit();
//////////////////////////////////////////////////////////////////////////////////
// WriteLOG
//
var LogFile = new Object();
function WriteLOG( sLogLine )
{
var d = new Date();
if ( LogFile == null )
{
LogFile = fs.OpenTextFile( ".\\Logfile.txt" , ForWriting, TRUE );
LogFile.WriteLine( sLogLine );
}
else
{
LogFile.WriteLine( sLogLine );
}
}
[/cc]
» Запись из раздела windows | Комментировать
скрипты для AD
Запись создана 12 марта, 2008
примеры скриптов из книги Inside Active Directory (авт. Sakari Kouti and Mika Seitsonen)
» Запись из раздела 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 & «
» 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 комментария