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

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

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

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

Открыть новую тему     Написать ответ в эту тему

ShriEkeR



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Предыдущие части: 1 | 2
 
   

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

 
Думаю каждый из вас сталкивался с необходимостью выполнять некие несложные рутинные операции, на которые уходит много драгоценного времени.
 Например, создать определенную структуру каталогов для каждого пользователя домена, изменить некие параметры в профилях всех или части пользователей, изменить полномочия/владельца однотипных файлов в разных каталогах т.д.  
Я, как сисадмин, тоже не раз был вынужден делать все это.  Руками делать это тоскливо и муторно, как вы понимаете. Должен заметить, что по неким "религиозным" убеждениям я всегда старался избегать любых отношений с бейсиком и его производными. Еще мой отец учил меня не иметь с ним никаких дел. Буквально. А теперь я учу своего сына тому же. Но, тем не менее, полностью избежать этого, по всей видимости, невозможно, тем более, что бейсик от 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 подобный скриптовый язык с исходниками
  9. VBS2EXE - утилита для компиляции vbs и js скриптов в exe выдранная из пакета PrimalScript

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

 
Подробнее...
Создается по материалам данного топа

 
Надеюсь данная тема будет полезна для Вас.
Jovanotti

Всего записей: 6382 | Зарегистр. 27-09-2004 | Отправлено: 21:07 23-05-2011 | Исправлено: Jovanotti, 23:29 21-03-2012
laprad

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

Цитата:
Вообще мне кажется уж утилит для работы с файлами должно быть написано множество

да, всегда кажется что программ дофига, но когда начнешь подбирать под реальную задачу, быстро наступает облом. тот же robocopy был бы более чем идеален, ЕСЛИ БЫ имел режим переноса файлов как у move.exe.

Цитата:
Взять хотя бы такую замечательную тулзу как TerraCopy.  

хм, разве в TerraCopy можно задать условие "переносить только ненулевые файлы с расширением не *.part"? если нельзя, то зачем он нужен? байты ведь гонять туда-сюда не надо, снова подчеркну, все действо происходит в пределах одного лог. диска. вопрос как ускорить поиск файлов в папке по вышеприведенным условиям. а с готовым списком файлов, как вы верно подсказали, и move отлично справится

Цитата:
напишите простенькую программку на VBS

сдается мне, не будет он быстрее чем cmd,  "FOR %%i IN"  заменится на "For Each File", но в принципе-то останется тупой перебор в списке файлов?..

Всего записей: 383 | Зарегистр. 19-01-2009 | Отправлено: 17:45 15-12-2013
vlary



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
laprad
Цитата:
да, всегда кажется что программ дофига, но когда начнешь подбирать под реальную задачу, быстро наступает облом.
Все правильно, обычно подобные программы написаны для наиболее часто востребованных задач,
возникающих у 90% юзеров.
На специфические задачи специфического контингента они не рассчитаны.
Для этого люди обычно сами пишут себе программу под конкретную свою задачу.
Которая больше ничего не умеет, но нужную  задачу выполняет на ура.
То, что требуется в данном случае, пишется програмером средней руки, имеющим представление о Win32 API и C++, за полчаса.  
Можно также сделать на C# либо PoverShell, преимущество - не нужна среда разработки, ибо все уже есть.

Цитата:
но в принципе-то останется тупой перебор в списке файлов?..  
А тебе что надо? У тебя там только 2 типа файлов: которые нужно перемещать, и которые - нет.  
Определяется это либо расширением файла, либо нулевой длиной.  
Так что по-любому будет именно тупой перебор.
Да и собственно, куда и зачем тебе спешить?


----------
Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

Всего записей: 16982 | Зарегистр. 13-06-2007 | Отправлено: 19:42 15-12-2013 | Исправлено: vlary, 20:00 15-12-2013
YNY

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
laprad
Я ваще не понимаю такого изврата, куда проще тупо упорядочить по типу и не ерзать!

Всего записей: 476 | Зарегистр. 18-05-2006 | Отправлено: 06:41 16-12-2013
daMIR



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Привет всем! Прошу помощи, задача вроде простая, но точно не знаю как надо.
Нужно пройтись по компьютерам в сети (список в txt), узнать размер конкретного файла в строго определенной директории и записать в виде имя компа - размер файла. Если до компа/файла не удалось достучаться, записать отдельно. Права на просмотр файла есть, в том числе к c$ сеть AD
 
Начал с постройки конструкции в cmd
 
ECHO OFF
setlocal ENABLEEXTENSIONS
for /f %%a in ('dir /b /s /a-d "\\my_superserver\share\*"') do (
if %%~za GTR 5000000 (
       
)
)
 
Или подскажите какой батник можно взять за пример.

Всего записей: 1752 | Зарегистр. 14-03-2004 | Отправлено: 14:11 11-03-2014
HumpSoft



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

Код:
 
# check_file.ps1
$list = get-content "c:\Scripts\my_hosts.txt"
foreach ($my_host_UNC_path in $list)
{
$my_host_UNC_path="\\$my_host_UNC_path\xxx\yyy.txt"
if (test-path  $my_host_UNC_path    )
{Write-Host $my_host_UNC_path, ((Get-ChildItem -path $my_host_UNC_path).Length) }
else
{Write-Host $my_host_UNC_path, "error connect" }
}
 

 
 
сойдет?

Всего записей: 516 | Зарегистр. 17-03-2006 | Отправлено: 17:22 11-03-2014 | Исправлено: HumpSoft, 11:40 12-03-2014
daMIR



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

Цитата:
сойдет?

Спасибо, попробую разобраться.
не совсем правда ясно, где какие переменные..
 

С помощью гугла накатал такой скрипт, правда он не работает..  

 
 
Ну вот, сделал сам Работает.

Код:
 
echo
setlocal ENABLEEXTENSIONS
Set PC=.\PC_list.txt
Set PCoff=.\PC_OFF.txt
Set LBase=.\ListBase.txt
Set Put=c$\base\1.db
 
For /F "UseBackQ Delims=" %%i In ("%PC%") Do (
   Ping -n 1 %%i >Nul
   If Not ErrorLevel 1 (  
       for %%L in (\\%%i\%Put%) do Echo %%i >>%LBase% %%~zL>>%LBase%
   ) Else Echo %%i >>%PCoff%
)
 

Что скажете, нормально сделан?

Всего записей: 1752 | Зарегистр. 14-03-2004 | Отправлено: 01:44 14-03-2014 | Исправлено: daMIR, 12:38 14-03-2014
YNY

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

Цитата:
daMIR

вроде cmd не работает с UNC - сетевыми, путями!

Всего записей: 476 | Зарегистр. 18-05-2006 | Отправлено: 09:39 16-03-2014
daMIR



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YNY
Ну в данном случае точно работает Размер файла исправно записывает в текстовик. Проверял выборочно- данные корректные.

Всего записей: 1752 | Зарегистр. 14-03-2004 | Отправлено: 09:25 17-03-2014
HumpSoft



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
daMIR это PowerShell . ежли чо )))
 
Всего 2 переменные - $list - массив имен хостов (прочитан из файла)
$my_host_UNC_path - изначально содержит имя хоста, потом превращается в unc путь проверяемого файла
 
перенаправить вывод данных в файл можно с помощью туннелирования в командлет
out-file  
 
типа так:

Код:
 
# check_file1.ps1
$list = get-content "c:\Scripts\my_hosts.txt"
Write-Output ("path" + ";" + "size") | out-file -Encoding utf8 -filepath c:\scripts\log.scv
foreach ($my_host_UNC_path in $list)
{
$my_host_UNC_path="\\$my_host_UNC_path\xxx\yyy.txt"
if (test-path  $my_host_UNC_path    )
{Write ($my_host_UNC_path+";"+((Get-ChildItem -path $my_host_UNC_path).Length))| out-file -append -Encoding utf8 -filepath c:\scripts\log.scv }
else
{Write ($my_host_UNC_path+";"+"ERR") | out-file -append -Encoding utf8 -filepath c:\scripts\log.scv }
}  
 
 

 
PS Совсем забыл - если имена хостов содержат кириллицу - my_hosts.txt должен быть в кодировке UTF8

Всего записей: 516 | Зарегистр. 17-03-2006 | Отправлено: 10:48 17-03-2014 | Исправлено: HumpSoft, 11:50 17-03-2014
king_stiven

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть такая программа
Process Monitor
http://technet.microsoft.com/ru-ru/sysinternals/bb896645
http://download.sysinternals.com/files/ProcessMonitor.zip
Она показывает, какой файл читает определённая программа, мне нужен аналог в комстроке.

Всего записей: 2165 | Зарегистр. 17-07-2006 | Отправлено: 20:22 22-06-2014
Alukardd



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
king_stiven
Вроде как другая утилита от SysInternals могёт оное — Handle

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6371 | Зарегистр. 28-08-2008 | Отправлено: 20:50 22-06-2014
king_stiven

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, но, сцуко, кириллицу не понимает в путях.

Всего записей: 2165 | Зарегистр. 17-07-2006 | Отправлено: 21:39 22-06-2014
Alukardd



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

----------
Microsoft gives you windows, linuх gives you the whole house...
I've been using Vim for about 4 years now, mostly because I can't figure out how to exit it.

Всего записей: 6371 | Зарегистр. 28-08-2008 | Отправлено: 22:08 22-06-2014
YNY

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
на povershel ты могешь много чего увидить и отсортировать вне зависимости от локализации

Всего записей: 476 | Зарегистр. 18-05-2006 | Отправлено: 14:50 24-06-2014
vlary



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
StNastya На вопрос Не получается запустить 2 скрипта при входе в домен
Настя, раз уж вы решили заняться столь трудным и неблагодарным делом,
откройте для себя такую вещь, как  WSF:
Using  Windows  Script  Files (.wsf)
Пример WSF файла testscript.wsf:

Код:
<job id="IncludeExample">
   <script language="JavaScript" src="sprintf.js"/>
   <script language="VBScript" src="logging.vbs"/>
   <script language="VBScript" src="iis-queryScriptMaps.vbs"/>
</job>

И запускается это одной строчкой
cscript.exe  testscript.wsf

----------
Заслуженный SCOтовод, почетный SUNтехник и любитель Кошек

Всего записей: 16982 | Зарегистр. 13-06-2007 | Отправлено: 14:51 02-07-2014 | Исправлено: vlary, 14:52 02-07-2014
YNY

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

Цитата:
vlary

Ну ты ваще гонишь! В приведенном примере в корне не верные действия, т.к. для запуска скриптов пути должны быть UNC, а не локальные!!!

Всего записей: 476 | Зарегистр. 18-05-2006 | Отправлено: 18:03 14-07-2014
CHIEFlab

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
помогите со скриптом отправки сообщения на почту. Прописана авторизация на smtp сервер. Но при запуске говорит что "503 authentication required"

Код:
compName = "Днепропетровск"        ' имя компьютера/сервера
Quota = 20                ' порог в Гб
strSMTP_Server = "mail.mail.com"    ' SMTP сервер
strSMTPPort = "25"
strSMTP_user = "111@111"    ' логин пользователя для SMTP сервера
strSMTP_password = "1111"        ' пароль пользователя для SMTP сервера
strTo = "111@111.com"            ' e-mail куда отсылаем предупреждение
strFrom = "111@1111.com"    ' от кого
strSubject = "Заканчивается свободное место на диске " & compName    ' тема сообщения
strBody = "Превышен лимит на диске"    ' текст сообщения
needSentMail = 0            ' флаг, что требуется слать письмо - достигнут лимит
DriveLetters = "C|E|F|G|H"        ' список дисков для проверки
 
DriveLettersArray = Split (DriveLetters,"|")    ' сделаем массив с буквами отслеживаемых дисков
 
For Each DriveLettersArray in DriveLettersArray  
 
    Set fso = WScript.CreateObject("Scripting.FileSystemObject")
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    Set Drive = fso.GetDrive(DriveLettersArray)
    free = Int((fso.GetDrive(drive).FreeSpace/(1024*1024*1024))) ' кол-во свободных Гб на винте
 
    If free < Quota Then
        needSentMail = 1
        strBody = strBody & vbNewLine & "Свободное место на диске " & DriveLettersArray & " меньше чем квота " & Quota & " Gb (" & free & " Gb)"
        'MsgBox strBody
        End If
 
Next
 
    ' если флаг был изменен, то уведомим по е-майлу администратора
    If needSentMail = 1 Then
        
        Set iMsg = CreateObject("CDO.Message")
        Set iConf = CreateObject("CDO.Configuration")
        Set Flds = iConf.Fields
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        'Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP_Server
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = strSMTPPort
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/SMTPAuthenticate") = cdoBasic
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/SendUserName") = strSMTP_user
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/SendPassword") = strSMTP_password
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10
        Flds.Update
        iMsg.Configuration = iConf
        iMsg.To = strTo
        iMsg.From = strFrom
        iMsg.Subject = strSubject
        iMsg.TextBody = strBody
        iMsg.Send
        
        
 
    End If

Всего записей: 27 | Зарегистр. 04-12-2006 | Отправлено: 18:35 15-07-2014 | Исправлено: CHIEFlab, 18:37 15-07-2014
Vby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
CHIEFlab
раскомментировать строку:
 'Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
 

Всего записей: 772 | Зарегистр. 16-09-2004 | Отправлено: 21:17 15-07-2014 | Исправлено: Vby, 21:20 15-07-2014
CHIEFlab

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

Код:
compName = "Днепропетровск"        ' имя компьютера/сервера
Quota = 20                ' порог в Гб
strSMTP_Server = "mail.mail.com"    ' SMTP сервер
strSMTPPort = "25"
strSMTP_user = "from@mail.com"    ' логин пользователя для SMTP сервера
strSMTP_password = "pass"        ' пароль пользователя для SMTP сервера
strTo = "to@mail.com"            ' e-mail куда отсылаем предупреждение
strFrom = "from@mail.com"    ' от кого
strSubject = "Заканчивается свободное место на диске " & compName    ' тема сообщения
strBody = "Превышен лимит на диске"    ' текст сообщения
needSentMail = 0            ' флаг, что требуется слать письмо - достигнут лимит
DriveLetters = "C|E|F|G|H"        ' список дисков для проверки
 
DriveLettersArray = Split (DriveLetters,"|")    ' сделаем массив с буквами отслеживаемых дисков
 
For Each DriveLettersArray in DriveLettersArray  
 
    Set fso = WScript.CreateObject("Scripting.FileSystemObject")
    Set WSHShell = WScript.CreateObject("WScript.Shell")
    Set Drive = fso.GetDrive(DriveLettersArray)
    free = Int((fso.GetDrive(drive).FreeSpace/(1024*1024*1024))) ' кол-во свободных Гб на винте
 
    If free < Quota Then
        needSentMail = 1
        strBody = strBody & vbNewLine & "Свободное место на диске " & DriveLettersArray & " меньше чем квота " & Quota & " Gb (" & free & " Gb)"
        'MsgBox strBody
        End If
 
Next
 
    ' если флаг был изменен, то уведомим по е-майлу администратора
    If needSentMail = 1 Then
        
        Set iMsg = CreateObject("CDO.Message")
        Set iConf = CreateObject("CDO.Configuration")
        Set Flds = iConf.Fields
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP_Server
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = strSMTPPort
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/SMTPAuthenticate") = cdoBasic
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/SendUserName") = strSMTP_user
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/SendPassword") = strSMTP_password
        Flds.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10
        Flds.Update
        iMsg.Configuration = iConf
        iMsg.To = strTo
        iMsg.From = strFrom
        iMsg.Subject = strSubject
        iMsg.TextBody = strBody
        iMsg.Send
        
        
 
    End If

Ошибка осталась.

Всего записей: 27 | Зарегистр. 04-12-2006 | Отправлено: 17:37 17-07-2014
Vby



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

Код:
 
compName = "Днепропетровск"        ' имя компьютера/сервера  
 Quota = 20                ' порог в Гб  
 strSMTP_Server = "mail.mail.com"    ' SMTP сервер  
 strSMTPPort = "25"  
 strSMTP_user = "from@mail.com"    ' логин пользователя для SMTP сервера  
 strSMTP_password = "pass"        ' пароль пользователя для SMTP сервера  
 strTo = "to@mail.com"            ' e-mail куда отсылаем предупреждение  
 strFrom = "from@mail.com"    ' от кого  
 strSubject = "Заканчивается свободное место на диске " & compName    ' тема сообщения  
 strBody = "Превышен лимит на диске"    ' текст сообщения  
 needSentMail = 0            ' флаг, что требуется слать письмо - достигнут лимит  
 DriveLetters = "C|E|F|G|H"        ' список дисков для проверки  
   
 DriveLettersArray = Split (DriveLetters,"|")    ' сделаем массив с буквами отслеживаемых дисков  
   
 For Each DriveLettersArray in DriveLettersArray  
   
     Set fso = WScript.CreateObject("Scripting.FileSystemObject")  
     Set WSHShell = WScript.CreateObject("WScript.Shell")  
     Set Drive = fso.GetDrive(DriveLettersArray)  
     free = Int((fso.GetDrive(drive).FreeSpace/(1024*1024*1024))) ' кол-во свободных Гб на винте  
   
     If free < Quota Then  
         needSentMail = 1  
         strBody = strBody & vbNewLine & "Свободное место на диске " & DriveLettersArray & " меньше чем квота " & Quota & " Gb (" & free & " Gb)"  
         'MsgBox strBody  
         End If  
   
 Next  
   
     ' если флаг был изменен, то уведомим по е-майлу администратора  
     If needSentMail = 1 Then  
           
     Set objEmail = CreateObject("CDO.Message")  
objEmail.Bodypart.CharSet = "windows-1251"  
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1  
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = strSMTP_user  
objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strSMTP_password  
objEmail.From = strFrom  
objEmail.To = strTo  
objEmail.Subject = strSubject  
objEmail.Textbody = strBody  
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2  
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP_Server  
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25  
objEmail.Configuration.Fields.Update  
objEmail.Send
           
           
   
     End If
 

Всего записей: 772 | Зарегистр. 16-09-2004 | Отправлено: 21:05 17-07-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования. Часть 3


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

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru