SuSE 9.2 снаружи и изнутри
Обзор дистрибутива SuSE Professional 9.2
Алексей Барабанов
rpm –root /mnt –dbpath /var/lib/rpm -U –-persent
--nosignature {а вдруг мантейнеры «левые» попадутся}
--force {систему ставить, затирая все конфликтные файлы}
--nodeps {авторы linuxrc вообще не доверяют никому из suse/people}
--ignoresize {игнорировать, так все, «до кучи»!}
/var/adm/YaST/InstSrcManager/IS_CACHE_0x00000001/MEDIA/suse/...*.rpm
# ls -l /mnt/suse/i586 | perl -ni -e '@s=split(/\d\d\:\d\d); @q=split(/-(\d)*\./,$s[1]); print $q[0], "\n"' | sort -u >i586.list
# cat x86_64.list | grep -v 32bit >x86_64only.list
# diff x86_64only.list i586.list > x86_64-i586.list
# rpm --requires -qp OpenOffice_org-tr-1.1.3-16.i586.rpm | grep -v ^rpmlib
# rpm --requires -qp OpenOffice_org-it-1.1.3-16.i586.rpm | grep -v ^rpmlib
# rpm --requires -qp OpenOffice_org-en-help-1.1.3-16.i586.rpm | grep -v ^rpmlib
# rpm --provides -qp OpenOffice_org-tr-1.1.3-16.i586.rpm
Прокси-сервер oops: первые впечатления
Сергей Супрунов
# portupgrade oops
group ourlan {
networks 192.168.0.0/24;
badports [0:79],110,138,139,513,[6000:6010] ;
bandwidth 16k;
per_ip_bw 4k;
http {
allow dstdomain * ;
}
}
group ouradmin {
networks 192.168.0.25/32;
badports [0:79],110,138,139,513,[6000:6010] ;
http {
allow dstdomain * ;
}
}
http {
deny dstdomain ru ;
allow dstdomain narod.ru ;
}
deny dstdomain include:baddomains.lst ;
Регулярное_выражение [Действие]
static internal_doc_t redir_internals[] = {
{"nospam1x1", "image/gif", sizeof(nospam1x1gif), 3600, nospam1x1gif},
{"nospam468x60", "image/gif", sizeof(nospam468x60gif), 3600, nospam468x60gif},
{"nospam_close", "text/html", sizeof(nospam_close)-1, 3600, nospam_close},
{"nospam_empty", "text/html", sizeof(nospam_empty)-1, 3600, nospam_empty},
{"nospam_js", "application/x-javascript", sizeof(nospam_js)-1, 3600, nospam_js},
{""}
};
# Если запрос соответствует нескольким правилам,
# применяется первое (на microsoft.com мы попасть не сможем)
.*soft.*
.*micro.* allow
# Запрещаем доступ на все домены третьего уровня, имя
# которых содержит строку amsand, за исключением amsand.narod.ru
http://.*amsand.narod.ru allow
http://.*amsand\..+.ru
# Проверка работы «внутренних» перенаправлений
http://.*/.*test1x1.* internal:nospam1x1
http://.*/.*test468x60.* internal:nospam468x60
http://.*/.*test_close.* internal:nospam_close
http://.*/.*test_empty.* internal:nospam_empty
http://.*/.*test_js.* internal:nospam_js
# Любой запрос, содержащий в имени ресурса упоминание
# Альтависты, будет перенаправлен на стартовую страницу
# Яндекса (кстати, вы даже не сможете выполнить поиск в том же
# Яндексе по запросу «altavista.com», поскольку в результате
# будет отправлен запрос
# «http://www.yandex.ru/yandsearch?rpt=rad&text=altavista.com»,
# который так же будет соответствовать данному правилу)
altavista.com http://yandex.ru
# Перенаправляет на ya.ru все запросы, имеющие цифры в части
# имени, соответвтующей домену 3-го уровня, например:
# http://www.max2.dom.ru/
# http://www3.w3c.org/index.html
http://.*[[:digit:]]+.*\.[[:alnum:]]+\.[a-z]{2,4}/.* ya.ru
# В ответ на любой запрос, завершающийся символами shtml,
# будет возвращена пустая страница (содержит только тег )
shtml$ internal:nospam_empty
# Будет запрещен доступ к любому ресурсу, адрес которого
# заканчивается именем файла page с одним из перечисленных
# расширений
http://.*/page.(html|htm|phtml)$
# Запрещаем доступ ко всем сайтам в зоне com, доменное имя
# которых имеет длину 7-9 символов (3-5 плюс ".com") и для
# которых не указано имя конкретного файла или папки,
# например: http://qwer.com/
http://.{3,5}\.com/?$
# Запрос к Яндексу будет перенаправлен на «аскетичный поиск»,
# что можно использовать для снижения трафика, создаваемого
# пользователями
http://(www.)?yandex\.ru/?$ http://ya.ru
# Блокируем все запросы со словом porno, в том числе
# и формируемые поисковиками
porno
# Вместо любых изображений возвращаем «пустой» рисунок
(gif|jpg|jpe|jpeg)$ internal:nospam1x1
# ipfw add 1000 fwd localhost,3128 ip from 192.168.0.0/24 to any dst-port 80
# oops –c /usr/local/etc/oops/oops.cfg –z
# oopsctl start
# oopsctl stat
# oopsctl stop
# oopsctl reconfigure
# oopsctl help
#!/usr/local/bin/python
import sys
try:
logfile = sys.argv[1]
except:
logfile = 'access.log'
logs = open(logfile, 'r').readlines()
traffic = {}
counter = {}
for log in logs:
splitted = log.split()
ip = splitted[2]
if traffic.has_key(ip):
traffic[ip] = traffic[ip] + int(splitted[4])
counter[ip] = counter[ip] + 1
else:
traffic[ip] = int(splitted[4])
counter[ip] = 1
keys = traffic.keys()
keys.sort()
for ip in keys:
print '%s | %7d | %15d (%7.2f) |' % (ip.ljust(18), counter[ip], traffic[ip], traffic[ip] / 1048576.0)
# ./getstat
Программное управление файловой системой с помощью VBScript
Иван Коробко
Set fso=WScript.CreateObject(“Scripting.FileSystemObject”)
path="…"
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
Set oFolders=fso.GetFolder(path)
path="…"
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(path) then
Set oFolders=fso.GetFolder(path)
…
Else
MsgBox "Folder " + path + " Not Exists"
End If
path="C:\Windows"
Temp=""
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(path) then
Set oFolders=fso.GetFolder(path)
Set OSubFolders=oFolders.Subfolders
For each i In OSubFolders
Temp=Temp+i.Name+chr(13)
Next
Else
Temp= "Folder " + path + " Not Exists"
End If
MsgBox Temp
Path="C:\RootFolder"
i=0
Dim Array() 'Объявление динамического массива
Set fso=Wscript.CreateObject("Scripting.FileSystemObject")
Set oFolder=fso.GetFolder(path)
Set oFolders=oFolder.SubFolders
' Изменение размера динамического массива
Redim Preserve Array(oFolders.count)
For Each of In oFolders
Array(i)=cstr(oF.Path) ' Запись элементов в массив
i=i+1
Next
'Чтение элементов массива:
Temp=""
For i=Lbound(Array) to Ubound(Array)
Temp=Temp+cstr(Array(i))+chr(13)+chr(10)
Next
MsgBox Temp
………..
' Вызов функции RecFolder в теле сценария
RecFolder index, path
………..
Function Recfolder (idx, path)
………..
………..
………..
Call Recfolder (idx+1, path)
………..
End Function
dim path_array()
path="c:\windows"
i=0
temp=""
detect(q)
MsgBox "oFolders_count: "+cstr(detect(q))
For j=0 to cstr(ubound(path_array)-1)
path=cstr(path_array(j))
temp=temp+cstr(j)+": "+path+chr(13)
Next
MsgBox temp
Function detect(c)
i=0
Set fso=Wscript.CreateObject("Scripting.FileSystemObject")
Set oFolder=fso.GetFolder(path)
Set oFolders=oFolder.SubFolders
Redim Preserve path_array(oFolders.count)
detect=oFolders.count
For Each oF In oFolders
path_array(i)=path+"\"+cstr(oF.Name)
i=i+1
Next
End Function
path="c:\windows"
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set fso=createobject("Scripting.filesystemobject")
Set oFolder=fso.GetFolder(path)
Set oFiles=oFolder.files
MsgBox "oFiles_count: "+cstr(oFiles.count)
temp=""
For each oFile in oFiles
temp=temp & oFile.name & chr(13)
Next
MsgBox text
path="c:\boot.ini"
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set fso=createobject("Scripting.filesystemobject")
Set oFile=fso.GetFile(path)
MsgBox oFile.Name&": "& oFile.Attributes
path="c:\boot.ini"
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set fso=createobject("Scripting.filesystemobject")
if fso.FileExists(path) then
Set oFile=fso.GetFile(path)
Attr_value=oFile.Attributes
temp=A_detect()
MsgBox oFile.Name&": "& temp
else
MggBox "Файл " &path& " не существует"
end if
function A_detect()
t=""
if (Attr_value and &H01)> 0 Then t=t+"Только для чтения; "
if (Attr_value and &H02)> 0 Then t=t+"Скрытый; "
if (Attr_value and &H04)> 0 Then t=t+"Системный; "
if (Attr_value and &H20)> 0 Then t=t+"Архивный; "
if (Attr_value and &H800)> 0 Then t=t+"Сжатый; "
A_detect=t
end function
path="c:\readme.txt"
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set fso=createobject("Scripting.filesystemobject")
Set oFile=fso.GetFile(path)
MsgBox oFile.Name&": "& oFile.Attributes
oFile.Attributes=39
MsgBox oFile.Name&": "& oFile.Attributes
path="C:\TempFolder"
Temp=""
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(path)=0 then
fso.CreateFolder(path)
Temp= "Folder " + path + " Created "
Else
Temp= "Folder " + path + " Already Exists"
End If
MsgBox Temp
path="C:\TempFolder"
Temp=""
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
If fso.FolderExists(path)<>0 then
fso.DeleteFolder(path)
Temp= "Folder " + path + " Deleted"
Else
Temp= "Folder " + path + " is Absent "
End If
MsgBox Temp
OldPath="C:\TempFolderOld"
NewPath="C:\TempFolderNew"
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
fso.CopyFolder OldPath, NewPath, 1
MsgBox "Папка " + OldPath + " скопирована в " + NewPath
OldPath="C:\TempFolderOld"
NewPath="C:\TempFolderNew"
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
fso.MoveFolder OldPath, NewPath, 1
MsgBox "Папка " + OldPath + " перемещена в " + NewPath
PathOld="C:\Folder\FileNameOld"
PathNew="C:\Folder\FileNameNew"
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
If (fso.FileExistes(PathOld)) Then
Set oFile=fso.GetFile(PathOld)
oFile.**** PathNew
End If
PathOld="C:\Folder\1.txt"
PathNew="C:\Folder\2.txt"
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
If (fso.FileExistes(PathOld)) Then
Set oFile=fso.GetFile(PathOld)
oFile.Copy PathNew
End If
PathDel="C:\Folder\1.txt"
Set fso=WScript.CreateObject("Scripting.FileSystemObject")
If (fso.FileExistes(PathDel)) Then
Set oFile=fso.GetFile(PathDel)
oFile.Delete
End If
regsvr32.exe /s ADsSequrity.dll
Set sec = CreateObject("ADsSecurity")
Set sd = sec.GetSecurityDescriptor("FILE://c:\folder")
Set dacl = sd.DiscretionaryAcl
For Each ace In dacl
Wscript.Echo cstr(ace.Trustee)+" " + cstr(ace.AccessMask) + " " + cstr(ace.AceType) + chr(13)+chr(10)
Next
Wscript.Echo dacl.AceCount
Set sec = CreateObject("ADsSecurity")
Set sd = sec.GetSecurityDescriptor("FILE://c:\Folder")
Set dacl = sd.DiscretionaryAcl
Set ace = CreateObject("AccessControlEntry")
ace.Trustee = "Domain\Administrator"
ace.AccessMask = &h20000000
ace.AceType = &h0
ace.AceFlags = &h3
dacl.AddAce ace1
sd.DiscretionaryAcl = dacl
sec.SetSecurityDescriptor sd
set dacl=nothing
set sec=nothing
Set sec = CreateObject("ADsSecurity")
Set sd = sec.GetSecurityDescriptor("FILE://c:\Folder")
Set dacl = sd.DiscretionaryAcl
Set ace1 = CreateObject("AccessControlEntry")
ace1.Trustee = "msk\corwin"
ace1.AccessMask = &h20000000
ace1.AceType = &h0
ace1.AceFlags = &h3
dacl.AddAce ace1
for i=0 to 10000000
next
Set ace2 = CreateObject("AccessControlEntry")
ace2.Trustee = "msk\sneretin"
ace2.AccessMask = &h20000000
ace2.AceType = &h0
ace2.AceFlags = &h3
dacl.AddAce ace2
sd.DiscretionaryAcl = dacl
sec.SetSecurityDescriptor sd
set dacl=nothing
set sec=nothing
Set sec = CreateObject("ADsSecurity")
Set sd = sec.GetSecurityDescriptor("FILE://c:\2")
Set dacl = sd.DiscretionaryAcl
For Each ace In dacl
If (ace.Trustee="EveryOne")
dacl.RemoveAce ace
end if
Next
sd.DiscretionaryAcl = dacl
set dacl=nothing
set sec=nothing
HOTSPOT – это просто!
Андрей Платонов
bd.asp
1
2