среда, 6 марта 2013 г.

Двунаправленная синхронизация с помощью nnbackup


Двунаправленная синхронизация с помощью nnbackup

@echo
rem Скрипт двунаправленной синхронизации (накопительная), что бы удалить файл или каталог, нужно удалить
rem их в папке приемника и в папке источника
rem -i папка источник
rem -s учитывать вложенные каталоги;
rem -o приемный каталог;
rem -e копировать пустые каталоги;
rem -c игнорировать файловые ошибки при копировании;
rem -v отображать пути копируемых фалов
"C:\Program Files (x86)\nnBackup\nnbackup.exe" sync2 -i c:\Temp\1\ -o c:\Temp\2\ -s -v -e -c -ts -ad -log "c:\Program Files\scripts\sync\arch.log"

SQL backup + 7zip


Скрипт создает backup sql базы, а затем с помощью 7zip архивируем backup
Sql script
DECLARE @pathName NVARCHAR(512)
SET @pathName = 'C:\temp_backup\gismurom\bd_is.bak'
BACKUP DATABASE [bd_is] TO DISK = @pathName WITH NOFORMAT, INIT, NAME = N 'bd_is', SKIP, NOREWIND, NOUNLOAD, STATS = 10
GO

Bat script
@echo off
sqlcmd.exe -S server\SQL2008 -U sa -P passkey -i bd_is.sql
set h=%TIME:~0,2%
set m=%TIME:~3,2%
set s=%TIME:~6,2%
set curtime=%h%-%m%-%s%
:: Откуда брать
set P0=C:\Temp\b
:: Куда архивировать
set P1=C:\Temp\arch
:: Backup all folders
start /wait "BackUP sql base" /min  "c:\Program Files\7-zip\7z.exe" a -mmt "%P1%\sql_%DATE%_%curtime%.zip" "%P0%\*.bak"
::Удаляем то что заархивировалось
del "%P0%\*.bak" 2>>"%P1%\log_file.%date%.txt"
::Удаляем старые бэкапы
forfiles.exe -p %P1%\ -s -m *.* -d -2 -c "cmd /c del @FILE"
exit

Создание, открытие, запись в файл


'Скрипт пишет в файл, если файла нет, то метод OpenTextFile создаст его
Sub CreateFile()
  Dim fso, f
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set f = fso.OpenTextFile("C:\Temp\writefile.txt",8) '1-чтение 2-для записи 8 - дозапись
  ' Записать строку с переводом на новую строку.
  f.WriteLine("Тестирование qwerty")
  ' Записать три пустых строки в файл.    
  'tf.WriteBlankLines(3)
  ' Записать строку
  f.Write ("Это тест")
  f.Close
End Sub
CreateFile()


'Скрипт создания и записи данных в файл
Sub CreateFile()
  Dim fso, tf
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set tf = fso.CreateTextFile("C:\Temp\writefile.txt", True)
  ' Записать строку с переводом на новую строку.
  tf.WriteLine("Тестирование 1, 2, 3.")
  ' Записать три пустых строки в файл.    
  tf.WriteBlankLines(3)
  ' Записать строку
  tf.Write ("Это тест")
  tf.Close
End Sub
CreateFile()

Запись в файл MAC-адреса


'17/02/2013 ITVolna
'Скрипт записи в файл новых значений пары - имя пк и его MAC
'Скрипт содержит две функции:macfunc - определения MAC и MACWrite - Записи MAC в файл
'
'
set WshShell = CreateObject("WScript.Shell")
Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName 'Имя ПК

' функция опеределения MAC адреса сетевой карты, в функцию должно передаваться имя ПК
Function macfunc(strComputer)
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
For Each IPConfig In IPConfigSet
'MAC адрес
   strMACAddress = IPConfig.MACAddress(i)
   macfunc=strMACAddress 'Возвращенное значение
Next
End Function

'Объявляем функцию записи в файл МАК адреса
Function MACWrite()
  Dim fso, f
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set f = fso.OpenTextFile("C:\Temp\writefile.txt",8) '1-чтение 2-для записи 8 - дозапись
  ' Записать строку с переводом на новую строку.
  f.WriteLine(strComputer & ": "&+macfunc(strComputer)) 'Пишем имя ПК и MAC
  f.Close
End Function

' Процедура которая открывает файл и ищет в нем строку с именем ПК и MAC адресом, если MAC Машины и имя ПК совпадает со значением из файла, то выходим из скрипта
' Если такого МАК адреса нет, то пишем в файл MAC данной машины
Sub OpenFileScan()
  Dim fso, f, readmac
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set f = fso.OpenTextFile("C:\Temp\writefile.txt",1) '1-чтение 2-для записи 8 - дозапись
If fso.FileExists("C:\Temp\writefile.txt") Then 'Файл со списком ПК
set readfile = FSO.OpenTextFile("C:\Temp\writefile.txt",1) 'Чтаем файл
While Not readfile.AtEndOfStream 'Читаем построчно, пока не конец файла
    readmac=readfile.ReadLine
s=strComputer & ": "&+macfunc(strComputer)
If s=readmac Then ' Если имя ПК и соответствующий ему мак адрес в файле есть то выходим из скрипта
WScript.Quit 'выход
End If
Wend
MACWrite() ' Вызываем функцию записи в файл Имя ПК и его MAC адреса
End If
End Sub

OpenFileScan()

Изменение DNS


'15/02/2013 ITVolna
'Скрипт читает файл со списком пк, имя пк передается в функцию ipfunc
'которая назначает данному компьютеру dns сервера (первичный и вторичный)
'Т.о списку ПК присваивается заданные dns параметры
On Error Resume Next 'Пропуск ошибок
dim readfile, readpc, i
set WshShell = CreateObject("WScript.Shell")
set WshNet = WScript.CreateObject("WScript.Network")
Set objNetwork = CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
set fso=CreateObject("Scripting.FileSystemObject")
'strComputer = "."

If fso.FileExists("c:\temp\scr\pc.txt") Then 'Файл со списком ПК
set readfile = FSO.OpenTextFile("c:\temp\scr\pc.txt",1) 'Чтаем файл
While Not readfile.AtEndOfStream 'Читаем построчно, пока не конец файла
    readpc=readfile.ReadLine
strComputer=readpc
ipfunc(readpc) 'Вызываем функцию назначения DNS
Wend
else WScript.Quit 'выход
End If

'Объявляем функцию
Function ipfunc(readpc)
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colNetCards = objWMIService.ExecQuery _
    ("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")
For Each objNetCard in colNetCards
    arrDNSServers = Array("192.168.5.2" , "192.168.5.3")
    objNetCard.SetDNSServerSearchOrder(arrDNSServers)
Next
End Function

Имя PC, ip, шлюза и DNS


'15/02/2013 ITVolna
'Скрипт выводит имя ПК, ip, шлюза и DNS

set WshShell = CreateObject("WScript.Shell")
set WshNet = WScript.CreateObject("WScript.Network")
Set objNetwork = CreateObject("WScript.Network")
'Получаем имя ПК
strComputer = objNetwork.ComputerName
'MsgBox strComputer

'Получаем Сетевые настройки
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
For Each IPConfig In IPConfigSet
'Ip-адрес
  For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
      strIP = strIP & "  " & IPConfig.IPAddress(i)
  Next
'Шлюз по умолчанию
  For i=LBound(IPConfig.DefaultIPGateway) to UBound(IPConfig.DefaultIPGateway)
      strIPGateway = strGateway & "  " & IPConfig.DefaultIPGateway(i)
  Next
'MAC адрес
   strDNS = strMACAddress & "  " & IPConfig.MACAddress(i)
  For i=LBound(IPConfig.DNSServerSearchOrder) to UBound(IPConfig.DNSServerSearchOrder)
      strDNS = strDNS & "  " & IPConfig.DNSServerSearchOrder(i)
  Next
Next

MsgBox  strComputer & strMACAddress & strDNS & strIPGateway & strIP