Jump to content

Backup Query


Recommended Posts

Guest Glenn Clark
Posted

Hi All

 

I have found the script below for backing up and emailing a contact once

complete. My problem is that even though the backup was sucessfull I get a

email saying its failed. Can anyone shed any light on this as I am not too

good with these scripts

 

Many thanks Glenn

 

// ==========================[ File

Header ]===================================

// File: bn-backup.js

// Version: 3.5

// Date: 15th February 2008

// Author: David Hewison

// Licence: GNU General Public License V2

//

//

// This program is free software; you can redistribute it and/or

// modify it under the terms of the GNU General Public License

// as published by the Free Software Foundation; either version 2

// of the License, or (at your option) any later version.

//

// This program is distributed in the hope that it will be useful,

// but WITHOUT ANY WARRANTY; without even the implied warranty of

// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

// GNU General Public License for more details.

 

// You should have received a copy of the GNU General Public License

// along with this program; if not, write to the Free Software

// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,

USA.

//

//

//

// Note: Set the number of ntbackup log files in the overwrite cycle to 1.

// Setting in HKCU\Software\Microsoft\NTbackup\Log Files\Log File Count

// Set the script operating parameters in xData()

// Separate backups are done for each set to overcome problems with VSS/2003

// - see Microsoft's Tech note ID: 820852

// Backup name on command line has maximum length of 28 characters

// ===========================[

Variables ]====================================

 

var fso = new ActiveXObject("Scripting.FileSystemObject");

var FileHandle, ExitStatus=0, BackupStatus=0;

var ForReading = 1, ForWriting = 2, ForAppending = 8;

var EmailBody = "Supplementary information:\n\n";

var NewLabel, Tapedevice;

 

// ===========================[ Main

Program ]=================================

 

EmailBody += OutlookWarning();

 

FileHandle = fso.OpenTextFile(IoLogFile(), ForWriting, true);

IoXMLHeader("", true, FileHandle);

IoLog("open", FileHandle);

 

BackupStatus = BackupStatus | Flag("firstset");

if (!((WScript.Arguments.length>0) && (WScript.Arguments(0).length<29)))

{

NewLabel = BackupLabel("");

BackupStatus += Flag("label");

}

else NewLabel = BackupLabel(WScript.Arguments(0));

if (BackupToDisk() && (xData(4040) == "")) BackupStatus +=

Flag("disk_path");

IoLogCustomerInfo(FileHandle);

IoXMLDataRaw("open", "System", FileHandle, GetData_TagAttributes("System"))

IoLogHostInfo(FileHandle);

if (BackupToTape() && ContinueBackup(BackupStatus,FileHandle)) Tapedevice =

TapeInitialisation(FileHandle);

if ((xData(3121)=="yes") && ContinueBackup(BackupStatus,FileHandle))

{

if (SharePointBackup(FileHandle))

{

EmailBody += GetData_SharepointSize(FileHandle);

}

}

if ((BackupToTape()) && (Tapedevice=="") &&

ContinueBackup(BackupStatus,FileHandle))

{

if (xData(4034) !="")

{

Tapedevice = TapeInitialisation(FileHandle);

if (Tapedevice=="")

{

EmailBody += "\nError: No tape media found.\n";

BackupStatus += Flag("no_tape");

}

}

else

{

EmailBody += "\nError: No tape device GUID found.\n";

BackupStatus += Flag("no_guid");

}

}

for (i=1;i<5;i++)

{

if (ContinueBackup(BackupStatus,FileHandle))

BackupStatus = BackupRun(Tapedevice, NewLabel, i, BackupStatus, FileHandle);

}

if ((xData(4031) == "yes") && (xData(4030)=="tape"))

{

if (ContinueBackup(BackupStatus,FileHandle) && ((BackupStatus &

Flag("firstset"))==0))

Tape_Eject(TapeLabel(Tapedevice, FileHandle), FileHandle);

}

GetData_LogicalDisk(FileHandle);

if (xData(3111) == "yes")

{

EmailBody += "\nExchange mailbox store size: " +

GetData_ExchStoreSize("mbx",FileHandle) + " GB\n";

EmailBody += "\nExchange public store size: " +

GetData_ExchStoreSize("pub",FileHandle) + " GB\n";

}

IoXMLDataRaw("close", "System", FileHandle, "")

 

 

IoLog("close", FileHandle);

FileHandle.Close();

Sleep(5);

 

 

if (xData(4024) != "yes") WScript.Quit(ExitStatus);

 

if (BackupStatus ==0)

{

Email(MyAddr(), xData(4023), xData(3001) + " " + NewLabel + " log",

EmailBody, IoLogFile(), ConCatenateFile());

WScript.Quit(BackupStatus);

}

else

{

Email(MyAddr(), xData(4023), xData(3001) + " " + NewLabel + " Failed",

EmailBody, IoLogFile(), "");

WScript.Quit(BackupStatus);

}

 

// ===========================[

functions ]====================================

 

 

function GetData_CompName()

{

var strComputer = ".", CompName="";

var objWMIService = GetObject("winmgmts:\\\\" + strComputer +

"\\root\\cimv2");

var e = new Enumerator(objWMIService.ExecQuery("Select * from

Win32_OperatingSystem","WQL",48));

 

for (;!e.atEnd();e.moveNext())

{ objItem = e.item();

 

CompName = objItem.CSName;

}

return(CompName);

}

 

 

 

function GetData_ExchStoreSize( store, LogHandle)

{

var Txt="", Units = "GB", LogF=0x00040000, size=0;

 

if ((xData(3111) == "yes") && ((store=="mbx") || (store=="pub")))

{

if (store == "mbx")

{

size = FsFileSize(xData(3112), LogHandle) + FsFileSize(xData(3113),

LogHandle);

size = NumberConversion(size, "", Units,2);

if (FsLogFlag(LogF))

{

IoXMLDataRaw("open", "MSExchangeIS", LogHandle,

GetData_TagAttributes("GetData_MSExchangeIS"));

IoXMLData("Store", "mailbox", LogHandle);

IoXMLData("dBFile", xData(3112), LogHandle);

IoXMLData("StmFile", xData(3113), LogHandle);

IoXMLData("Size", size, LogHandle);

IoXMLData("Units", Units, LogHandle);

IoXMLDataRaw("close", "MSExchangeIS", LogHandle, "");

}

}

if (store == "pub")

{

size = FsFileSize(xData(3114), LogHandle) + FsFileSize(xData(3115),

LogHandle);

size = NumberConversion(size, "", Units,2);

if (FsLogFlag(LogF))

{

IoXMLDataRaw("open", "MSExchangeIS", LogHandle,

GetData_TagAttributes("GetData_MSExchangeIS"));

IoXMLData("Store", "public", LogHandle);

IoXMLData("dBFile", xData(3114), LogHandle);

IoXMLData("StmFile", xData(3115), LogHandle);

IoXMLData("Size", size, LogHandle);

IoXMLData("Units", Units, LogHandle);

IoXMLDataRaw("close", "MSExchangeIS", LogHandle, "");

}

}

}

return(size);

}

 

 

 

function GetData_LogicalDisk(LogHandle)

{

var strComputer = ".", Units = "GB",LogF=0x00040000;

var objWMIService = GetObject("winmgmts:\\\\" + strComputer +

"\\root\\cimv2");

var e = new Enumerator(objWMIService.ExecQuery("Select * from

Win32_LogicalDisk","WQL",48));

if (FsLogFlag(LogF))

{

for (;!e.atEnd();e.moveNext())

{ objItem = e.item();

if (objItem.DriveType == 3)

{

IoXMLDataRaw("open", "LogicalDisk", LogHandle,

GetData_TagAttributes("LogicalDisk"));

IoXMLData("DiskDrive", objItem.DeviceID, LogHandle);

IoXMLData("Description", objItem.Description, LogHandle);

IoXMLData("FileSystem", objItem.FileSystem, LogHandle);

IoXMLData("FreeSpace", NumberConversion(objItem.FreeSpace, "", Units,2),

LogHandle);

IoXMLData("TotalSize", NumberConversion(objItem.Size, "", Units,2),

LogHandle);

IoXMLData("Units", Units, LogHandle);

IoXMLData("VolumeName", objItem.VolumeName, LogHandle);

IoXMLDataRaw("close", "LogicalDisk", LogHandle, "");

}

}

}

return(0);

}

 

 

 

function GetData_OS(LogHandle)

{

var strComputer = ".",LogF=0x20000;

var objWMIService = GetObject("winmgmts:\\\\" + strComputer +

"\\root\\cimv2");

var e = new Enumerator(objWMIService.ExecQuery("Select * from

Win32_OperatingSystem","WQL",48));

if (FsLogFlag(LogF))

{

for (;!e.atEnd();e.moveNext())

{ objItem = e.item();

IoXMLDataRaw("open", "SystemSummary", LogHandle,

GetData_TagAttributes("OS_Data"));

IoXMLData("Organisation", objItem.Organization, LogHandle);

IoXMLData("HostName", objItem.CSName, LogHandle);

IoXMLData("OS", objItem.Caption, LogHandle);

IoXMLData("Version", objItem.Version, LogHandle);

IoXMLData("ServicePack", objItem.CSDVersion, LogHandle);

//IoXMLData("SerialNumber", objItem.SerialNumber, LogHandle);

//IoXMLData("MaxPageFile", objItem.TotalVirtualMemorySize, LogHandle);

//IoXMLData("MemorySize", objItem.TotalVisibleMemorySize, LogHandle);

//IoXMLData("FreeMemory", objItem.FreePhysicalMemory, LogHandle);

//IoXMLData("LastBootUpTime", objItem.LastBootUpTime, LogHandle);

//IoXMLData("DateTime", objItem.LocalDateTime, LogHandle);

IoXMLDataRaw("close", "SystemSummary", LogHandle, "");

}

}

return(0);

}

 

 

 

function GetData_SharepointSize(LogHandle)

{

var Txt, Units="MB";

if (xData(3121) == "yes")

{

IoLogEvent("open", LogHandle, "");

Txt = "Size of sharepoint backup file is ";

Txt += NumberConversion( FsFileSize(xData(3123), LogHandle), "", Units, 2);

Txt += " " + Units + ".\n";

IoLogEvent("content", FileHandle, Txt);

IoLogEvent("close", LogHandle, "");

}

return(Txt);

}

 

 

 

function GetData_TagAttributes(SrcTxt)

{

var oTxt="";

oTxt += "date=\""+DateInfo()+"\"";

oTxt += " time=\""+TimeInfo()+"\"";

oTxt += " type=\"information\" source=\"GetData_"+SrcTxt+"\"";

oTxt += " category=\"none\" id=\"0\"";

return(oTxt);

}

 

 

 

function GetData_TapeDrive(LogHandle)

{

var objWMIService = GetObject("winmgmts:\\\\.\\root\\cimv2");

var tape0="";

var e = new Enumerator(objWMIService.ExecQuery("Select * from

Win32_TapeDrive","WQL",48));

for (;!e.atEnd();e.moveNext())

{

objItem = e.item();

IoXMLDataRaw("open", "Tape_Drives", LogHandle,

GetData_TagAttributes("Tape_Drives"));

IoXMLData("Name", objItem.Name, LogHandle);

if (tape0=="") tape0=objItem.Name;

IoXMLData("Description", objItem.Description, LogHandle);

IoXMLData("Manufacturer", objItem.Manufacturer, LogHandle);

IoXMLData("Status", objItem.Status, LogHandle);

if (objItem.NeedsCleaning) IoXMLData("Cleaning", "Drive needs cleaning",

LogHandle);

switch (objItem.Availability)

{

case 0x3: IoXMLData("Availability", "Running/Full Power", LogHandle);

break;

case 0x4: IoXMLData("Availability", "Warning", LogHandle);

break;

case 0x5: IoXMLData("Availability", "In Test", LogHandle);

break;

case 0x7: IoXMLData("Availability", "Power Off", LogHandle);

break;

case 0x8: IoXMLData("Availability", "Offline", LogHandle);

break;

case 0x9: IoXMLData("Availability", "Off duty", LogHandle);

break;

case 0xA: IoXMLData("Availability", "Degraded", LogHandle);

break;

default: IoXMLData("Availability", "Unknown", LogHandle);

break;

}

switch (objItem.Capabilities[0])

{

case 0x1: IoXMLData("Capabilities", "Other", LogHandle);

break;

case 0x2: IoXMLData("Capabilities", "Sequential Access", LogHandle);

break;

case 0x3: IoXMLData("Capabilities", "Random Access", LogHandle);

break;

case 0x4: IoXMLData("Capabilities", "Supports Writing", LogHandle);

break;

default: IoXMLData("Capabilities","Unknown", LogHandle);

break;

}

if (objItem.Compression) IoXMLData("Compression", "Hardware compression is

enabled", LogHandle);

IoXMLDataRaw("close", "Tape_Drives", LogHandle, "");

}

return(tape0);

}

 

 

 

function GetTempPath(os)

{

var wsh;

wsh = WScript.CreateObject("WScript.Shell").environment;

return(wsh("TEMP"));

}

 

 

 

//

============================================================================

// JScript Library module: email functions

// Author: David Hewison

// Version: 2007.02.07.01

//

// ===========================[

functions ]====================================

 

 

//

 

function Email(From, To, Subject, BodyText, AttachFile1, AttachFile2)

{

var objEmail = new ActiveXObject("CDO.Message");

objEmail.From = From;

objEmail.To = To;

objEmail.Subject = Subject;

objEmail.TextBody = BodyText;

if (AttachFile1 != "") objEmail.AddAttachment(AttachFile1);

if (AttachFile2 != "") objEmail.AddAttachment(AttachFile2);

objEmail.Send();

return(0);

}

 

 

 

function MyAddr()

{

return(xData(4021));

}

 

 

 

function OutlookWarning()

{

var msg="";

msg += "The attached log file bn-backup.xml will not open correctly inside

Microsoft Outlook ";

msg += "(see Microsoft Q303487).";

msg += "If you are using Microsoft Outlook you must save the attached

logfile to disk first ";

msg += "and open it from there.\n\n";

return(msg);

}

 

 

 

//

============================================================================

// JScript Library module: filesystem functions

// Author: David Hewison

// Version: 2007.02.07.01

// ===========================[

functions ]====================================

 

 

// [ FileSystem Library]

 

function FsCheckFileExists(FileName, LogHandle)

{

var ExitCode, LogF=0x2;

if (FsLogFlag(LogF)) IoLogEvent("open", LogHandle, "FsCheckFileExists");

var fso = new ActiveXObject("Scripting.FileSystemObject");

ExitCode = fso.FileExists(FileName)

if (FsLogFlag(LogF))

{

if (ExitCode) IoLogEvent("content", LogHandle, FileName +" does exist\n");

else IoLogEvent("content", LogHandle, FileName +" was not found\n");

IoLogEvent("close",LogHandle,"");

}

return(ExitCode);

}

 

 

 

function FsCheckFolderExists(FolderName, LogHandle)

{

var ExitCode, LogF=0x200;

if (FsLogFlag(LogF)) IoLogEvent("open", LogHandle, "");

var fso = new ActiveXObject("Scripting.FileSystemObject");

ExitCode = fso.FolderExists(FolderName)

if (FsLogFlag(LogF))

{

if (ExitCode) IoLogEvent("content", LogHandle, "FsCheckFolderExists success:

" + FolderName +"\n");

else IoLogEvent("content", LogHandle, "FsCheckFolderExists fail: " +

FolderName +"\n");

IoLogEvent("close",LogHandle,"");

}

return(ExitCode);

}

 

 

 

function FsFileCreate(FileName, LogHandle, Overwrite, Unicode)

{

var f, fso, LogF=0x1;

 

if ((FsCheckFileExists(FileName, LogHandle) && Overwrite) ||

(!FsCheckFileExists(FileName, LogHandle)))

{

if (FsLogFlag(LogF)) IoLogEvent("open", LogHandle, "");

fso = new ActiveXObject("Scripting.FileSystemObject");

f = fso.CreateTextFile(FileName, Overwrite, Unicode);

f.Close();

if (FsLogFlag(LogF))

{

IoLogEvent("content", LogHandle, "FsFileCreate: " + FileName +"\n");

IoLogEvent("close",LogHandle,"");

}

return(0);

}

else return(1);

}

 

 

 

function FsFileDelete(FileName, LogHandle)

{

var f, fso, LogF=0x8;

 

if (FsCheckFileExists(FileName, LogHandle))

{

if (FsLogFlag(LogF)) IoLogEvent("open", LogHandle, "");

fso = new ActiveXObject("Scripting.FileSystemObject");

f = fso.Getfile(FileName);

f.Delete();

if (FsLogFlag(LogF))

{

IoLogEvent("content", LogHandle, "FsFileDelete: " + FileName +"\n");

IoLogEvent("close",LogHandle,"");

}

return(0);

}

else return(1);

}

 

 

function FsFileSize(FileName, LogHandle)

{

var fso, s, o;

fso = new ActiveXObject("Scripting.FileSystemObject");

o = fso.GetFile(FileName);

if (FsCheckFileExists(o, LogHandle))

s = o.size;

else

s = -1;

return(s);

}

 

 

 

function FsFileWrite(FileName, LogHandle, Unicode, text)

{

var f, fso, LogF=0x10;

 

if (FsCheckFileExists(FileName, LogHandle))

{

if (FsLogFlag(LogF)) IoLogEvent("open", LogHandle, "");

fso = new ActiveXObject("Scripting.FileSystemObject");

f = fso.OpenTextFile(FileName, 2, false, Unicode);

f.Write(text);

f.Close();

if (FsLogFlag(LogF))

{

IoLogEvent("content", LogHandle, "FsFileWrite: " + FileName +"\n");

IoLogEvent("close",LogHandle,"");

}

return(0);

}

else return(1);

}

 

 

 

function FsFolderCopy(SrcPath, DestPath, LogHandle)

{

var LogF=0x400;

if (FsLogFlag(LogF)) IoLogEvent("open", LogHandle, "");

fso = new ActiveXObject("Scripting.FileSystemObject");

fso.CopyFolder(SrcPath, DestPath)

if (FsLogFlag(LogF))

{

IoLogEvent("content", LogHandle, "FsFolderCopy: " + SrcPath + " to " +

DestPath + "\n");

IoLogEvent("close",LogHandle,"");

}

return(0);

}

 

 

function FsFolderCreate(Path, LogHandle)

{

var fso, a, LogF=0x100;

if (FsLogFlag(LogF)) IoLogEvent("open", LogHandle, "");

fso = new ActiveXObject("Scripting.FileSystemObject");

if (fso.FolderExists(Path)) return(0);

a = fso.CreateFolder(Path);

if (FsLogFlag(LogF))

{

IoLogEvent("content", LogHandle, "FsFolderCreate: " + Path +"\n");

IoLogEvent("close",LogHandle,"");

}

return(0);

}

 

 

 

 

function FsFolderListing(Path)

{

 

var fso, f, f1, fc, s;

fso = new ActiveXObject("Scripting.FileSystemObject");

f = fso.GetFolder(Path);

fc = new Enumerator(f.files);

s = "";

for (; !fc.atEnd(); fc.moveNext())

{

s += fc.item() + "\n";

}

return(s);

}

 

 

 

 

 

function FsGetTempPath(LogHandle)

{

var wsh, LogF=0x1000,v="";

wsh = WScript.CreateObject("WScript.Shell").environment;

v = wsh("TEMP");

if (FsLogFlag(LogF)) IoLogEvent("open", LogHandle, "");

if (FsLogFlag(LogF))

{

IoLogEvent("content", LogHandle, "Var TEMP: " + v +"\n");

IoLogEvent("close",LogHandle,"");

}

return(v);

}

 

 

 

function FsGetScriptPath(LogHandle)

{

var p, LogF=0x2000;

if (FsLogFlag(LogF)) IoLogEvent("open", LogHandle, "");

p = WScript.ScriptFullName.substring(0,WScript.ScriptFullName.length -

WScript.ScriptName.length);

if (FsLogFlag(LogF))

{

IoLogEvent("content", LogHandle, "Script Path: " + p +"\n");

IoLogEvent("close",LogHandle,"");

}

return(p);

}

 

 

 

function FsLogFlag(flag)

{

if ((xData(1001) & flag) == flag)

{

return(true);

}

else

{

return(false);

}

}

 

 

 

function FsObjectSize(Obj, LogHandle)

{

var fso, s;

fso = new ActiveXObject("Scripting.FileSystemObject");

if ((FsCheckFileExists(Obj, LogHandle)) || (FsCheckFolderExists(Obj,

LogHandle)))

s = fso.size;

else

s = -1;

return(s);

}

 

 

 

function FsRegistryWriteKey(Key, LogHandle)

{

var WshShell = WScript.CreateObject("WScript.Shell");

IoLogEvent("open", LogHandle, "");

IoLogEvent("content", LogHandle, "Adding registry key: " + Key + "\n");

WshShell.RegWrite( Key, 1, "REG_BINARY");

IoLogEvent("close", LogHandle, "");

return(0);

}

 

 

 

function FsRegistryWriteValue(Value, Type, Content, LogHandle)

{

// Permissible Types are: REG_SZ, REG_DWORD, REG_BINARY

 

var WshShell = WScript.CreateObject("WScript.Shell");

IoLogEvent("open", LogHandle, "");

IoLogEvent("content", LogHandle, "Adding registry value: " + Value + "\n");

IoLogEvent("content", LogHandle, " - value type: " + Type + "\n");

IoLogEvent("content", LogHandle, " - value content: " + Content + "\n");

WshShell.RegWrite(Value, Content, Type);

IoLogEvent("close", LogHandle, "");

return(0)

}

 

 

 

function FsRunExtProg(Prog, Synchronously, LogHandle)

{

var LogF=0x4000, Result;

var WshShell = new ActiveXObject("WScript.Shell");

var Process = WshShell.Exec(Prog);

if (FsLogFlag(LogF))

{

IoLogEvent("open", LogHandle, "Process_spawing");

if (!Synchronously)

IoLogEvent("content", LogHandle, "Spawning asynchronously: " + Prog +"\n");

else

IoLogEvent("content", LogHandle, "Spawning synchronously: " + Prog +"\n");

IoLogEvent("close",LogHandle,"");

 

}

if (!Synchronously)

{

return(0);

}

while (!Process.Status)

{

WScript.Sleep(10);

}

Result = Process.ExitCode

if (FsLogFlag(LogF))

{

IoLogEvent("open", LogHandle, "Process_Result");

IoLogEvent("content",LogHandle,Result);

IoLogEvent("close",LogHandle,"");

}

return(Result);

}

 

 

 

function FsScheduleCreate(Name, Command, Arguments, Type, Modifier, Start,

LogHandle)

{

var ComStr = "schtasks /create";

ComStr += " /TN \"" + Name + "\"";

ComStr += " /TR \"" + Command + " " + Arguments + "\"";

ComStr += " /SC " + Type + " /MO " + Modifier;

if (Start != "") ComStr += " /ST " + Start;

ComStr += " /S " + xData(5) + " /RU " + xData(8) + " /RP " + xData(9);

IoLogEvent("open", LogHandle, "");

IoLogEvent("content", LogHandle, "Creating scheduler task: " + Name + "\n");

IoLogEvent("content", LogHandle, "Data: " + ComStr + "\n");

RunExtProg("cmd.exe /c " + ComStr, false);

IoLogEvent("close", LogHandle, "");

return(0);

}

 

 

function FsReadTempFile()

{

var fs0, fo, fh, Line, tXt="";

var fso = new ActiveXObject("Scripting.FileSystemObject");

 

fo = fso.GetFile(FsTempFile());

fh = fo.OpenAsTextStream( 1, -2);

while (!fh.AtEndOfStream)

{

Line = fh.ReadLine();

if (Line != "") tXt += " \"" + Line + "\" ";

}

fh.Close();

return(tXt);

}

 

 

function FsTempFile()

{

return(xData(1011) + "\\" + xData(4003));

}

 

 

 

//

============================================================================

// JScript Library module

// Author: David Hewison

// Version: 2006.08.26.01

//

// ===========================[ I/O

Library ]====================================

 

 

function IoAsk(Question)

{

var answer="";

IoConsoleOut(Question);

return(IoConsoleIn());

}

 

 

 

function IoConsoleIn()

{

var fso, h1, TextIn;

fso = WScript.CreateObject("Scripting.FileSystemObject");

 

h1 = fso.OpenTextFile("con",1, false);

TextIn = h1.ReadLine();

h1.Close();

return(TextIn);

}

 

 

 

function IoConsoleOut(text)

{

var fso, h1;

fso = WScript.CreateObject("Scripting.FileSystemObject");

 

h2 = fso.OpenTextFile("con",2, true);

h2.Write(text);

h2.Close();

return;

}

 

 

 

 

 

 

function IoLog(mode, LogHandle)

{

if (mode=="open")

{

LogHandle.Write("<bnlog " + IoXMLSchema("bnlog") + ">\n");

}

if (mode=="close")

{

LogHandle.Write("</bnlog>\n");

}

return(0);

}

 

 

 

function IoLogCustomerInfo(LogHandle)

{

IoXMLDataRaw("open", "Customer", LogHandle, "");

IoXMLDataRaw("open", "Name", LogHandle, "");

IoXMLDataRaw("content", "", LogHandle, xData(3001));

IoXMLDataRaw("close", "Name", LogHandle, "");

IoXMLDataRaw("close", "Customer", LogHandle, "");

return(0);

}

 

 

 

function IoLogEvent(mode, LogHandle, Text)

{

if (mode=="open")

{

var Src = xData(1014), oTxt="";

if (Text != "") Src = Text;

oTxt = "<Logevent date=\""+DateInfo()+"\"";

oTxt += " time=\""+TimeInfo()+"\"";

oTxt += " type=\"information\""

oTxt += " source=\"" + Src + "\"";

oTxt += " category=\"none\" id=\"0\">\n";

LogHandle.Write(oTxt);

}

if (mode=="close")

{

var oTxt = "</Logevent>\n";

LogHandle.Write(oTxt);

}

if (mode=="content")

{

var oTxt = Text;

LogHandle.Write(oTxt);

}

return(0);

}

 

 

 

 

function IoLogFile()

{

return(xData(1011) + "\\" + xData(1012));

}

 

 

 

function IoLogHostInfo(LogHandle)

{

GetData_OS(LogHandle);

return(0);

}

 

 

 

function IoXMLComment(Text)

{

var comment="";

comment += "<!--";

comment += Text;

comment += "-->\n";

return(comment);

}

 

 

 

function IoXMLData( TagName, Content, LogHandle)

{

IoXMLDataRaw( "open", TagName, LogHandle, "");

IoXMLDataRaw( "content", "", LogHandle, Content);

IoXMLDataRaw( "close", TagName, LogHandle, "");

return(0);

}

 

 

 

function IoXMLDataRaw(mode, TagName, LogHandle, Text)

{

if (mode=="open")

{

var oTxt = "\n<" + TagName + " " + Text + ">";

LogHandle.Write(oTxt);

}

if (mode=="close")

{

var oTxt = "\n</" + TagName + ">";

LogHandle.Write(oTxt);

}

if (mode=="content")

{

var oTxt = Text;

LogHandle.Write(oTxt);

}

return(0);

}

 

 

 

 

function IoXMLHeader(DocType, Standalone, LogHandle)

{

var XMLHeader;

var InlineHeader="<?xml version=\"1.0\" standalone=\"yes\"?>";

var ExtHeader="<?xml version=\"1.0\" standalone=\"no\"?>";

var Style="bnlog";

var DocName = "Logging: " + xData(1) + " " + xData(2) + " \n Code libraries

by David Hewison, Infoshop 2000-2008";

var BN="Busted Networks Ltd";

var BNDetails="";

BNDetails += "PO Box 103\nBognor Regis\nWest Sussex\nPO22 0WB\nUK";

BNDetails += "\nWeb: http://www.bustednetworks.com";

BNDetails += "\nEmail: sales@bustednetworks.com";

 

if (Standalone) XMLHeader = InlineHeader;

else XMLHeader = ExtHeader;

LogHandle.Write(XMLHeader + "\n");

LogHandle.Write( IoXMLStylesheet(Style) );

LogHandle.Write(IoXMLComment(DocName));

LogHandle.Write(IoXMLComment(BN));

LogHandle.Write(IoXMLComment(BNDetails));

return(0);

}

 

 

 

function IoXMLSchema(schema)

{

var xsd="";

switch (schema)

{

case "bnlog": //Schema for Busted Networks Log Files

xsd += "xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";

xsd +=

"xsi:noNamespaceSchemaLocation=\"http://www.infoshop.co.uk/xsd/bnlog-schema.xsd\"\n";

break;

default:

break;

}

return(xsd);

 

}

 

 

function IoXMLStylesheet(style)

{

var xsl="";

switch (style)

{

case "bnlog": //Style sheet for Busted Networks Log Files

xsl += "<?xml-stylesheet TYPE='text/xsl'

href='http://www.infoshop.co.uk/xsl/bnlogstyle.xsl'?>\n";

break;

default:

break;

}

return(xsl);

}

 

 

 

//

============================================================================

// JScript Library module: Number functions

// Author: David Hewison

// Version: 2007.02.07.01

//

// ===========================[ Num

Library ]====================================

 

 

function NumberConversion(x,srcUnits,targetUnits, Digits)

{

var y = 1, z = 1;

switch (srcUnits)

{

case "KB": y = 1024;

break;

 

case "MB": y = 1048576;

break;

 

case "GB": y = 1073741824;

break;

}

switch (targetUnits)

{

case "KB": z = 1024;

break;

 

case "MB": z = 1048576;

break;

 

case "GB": z = 1073741824;

break;

}

 

return( parseInt(x * (y / z) * Math.pow(10,Digits))/Math.pow(10,Digits) );

}

 

 

 

//

============================================================================

// JScript Library module: rsm interface

// Author: David Hewison

// Version: 2007.02.01.01

//

// ===========================[ rsm

library ]====================================

 

 

function rsm(Arguments, FileHandle, LoopMax)

{

var i, ExitCode, cmdLine, fh, fo, fso, info;

if (LoopMax>3) LoopMax = 3;

if (LoopMax<1) LoopMax = 1;

for (i=0; i<LoopMax; i++)

{

info = " --result:";

cmdLine = "cmd.exe /C rsm.exe " + Arguments;

TapeLog("append", "\nrsm command: " + cmdLine + "\n Command Output:\n");

IoLogEvent("open", FileHandle, "RSM_Command")

IoLogEvent("content", FileHandle, "\""+ Arguments + "\" \n")

IoLogEvent("close", FileHandle, "")

ExitCode = FsRunExtProg(cmdLine + " > \"" + FsTempFile() + "\"\"", true,

FileHandle);

FsRunExtProg("cmd.exe /c type \"" + FsTempFile() + "\" >> \"" +

TapeLogFile() + "\"\"", true, FileHandle);

IoLogEvent("open", FileHandle, "RSM_Result");

IoLogEvent("content", FileHandle, FsReadTempFile());

IoLogEvent("close", FileHandle, "");

if (ExitCode==0) i=LoopMax;

else

{

IoLogEvent("open", FileHandle, "RSM_Result");

IoLogEvent("content", FileHandle, "Tape drive not ready, waiting" +

xData(4033) + " minutes\n");

IoLogEvent("close", FileHandle, "");

Sleep(xData(4033)*60);

}

}

return(FsReadTempFile());

}

 

 

 

//

============================================================================

// JScript Library module: sharepoint interface

// Author: David Hewison

// Version: 2007.02.01.01

//

// ===========================[ sharepoint

library ]============================

 

 

function SharePointBackup(LogHandle)

{

var ExitStatus, UtilCmd;

var UtilCmd1 = "-o backup -url " + xData(3124) + " -filename ";

var UtilCmd2 = " -overwrite";

UtilCmd = UtilCmd1 + xData(3123) + UtilCmd2;

 

if (xData(3121)=="yes")

{

ExitStatus = FsRunExtProg("cmd.exe. /c " + xData(3122) + " " + UtilCmd,

true, LogHandle)

IoLogEvent("open", LogHandle, "");

if (ExitStatus==0) IoLogEvent("content", LogHandle, "Sharepoint backed up to

disk successfully\n");

else IoLogEvent("content", LogHandle, "Sharepoint backup returned error code

" + ExitStatus + "\n");

IoLogEvent("close", LogHandle, "");

}

return((ExitStatus==0));

}

 

 

 

//

============================================================================

// JScript Library module: string handling functions

// Author: David Hewison

// Version: 2006.04.26.01

//

// ===========================[

functions ]====================================

 

 

// [string Library]

 

function StrNumToStr(Number, Length)

{

var Index = "";

Index = Number.toString();

while (Index.length<Length) Index = "0"+Index;

return(Index);

}

 

 

function StrIdxStr(Number, Length)

{

var Index = "";

Index = Number.toString();

while (Index.length<Length) Index = "0"+Index;

return(Index);

}

 

 

//

============================================================================

// JScript Library module: tape and backup functions

// Author: David Hewison

// Version: 2007.02.07.01

//

// ===========================[

functions ]====================================

 

 

function Backup( BkUpCommand, FileHandle)

{

var ExitCode=0, BkUpUtil;

BkUpUtil = BackUpUtil();

if (!FsCheckFileExists(BkUpUtil, FileHandle))

{

IoLogEvent("open", FileHandle, "Backup");

IoLogEvent("content", FileHandle, "Could not find: "+ BkUpUtil + "\n");

IoLogEvent("close", FileHandle, "");

ExitCode = 1;

}

else

{

IoLogEvent("open", FileHandle, "Backup");

IoLogEvent("content", FileHandle," Starting with options: " + BkUpCommand +

"\n");

IoLogEvent("close", FileHandle, "");

ExitCode = FsRunExtProg("\""+BkUpUtil + "\" " + BkUpCommand, true,

FileHandle);

IoLogEvent("open", FileHandle, "Backup_Result");

IoLogEvent("content", FileHandle, ExitCode);

IoLogEvent("close", FileHandle, "");

}

return(ExitCode);

}

 

 

 

function BackupArgs(Name, SetLoc, overwrite)

{

var Label = "", Command = "", SetName="",i;

for(i=1 ; i<5 ; i++)

{

if (BackUpSet(i)==SetLoc) SetName = "-" + i;

}

Label = "\"" + Name + "\"";

Command = "backup " + "\"" + SetLoc + "\"";

Command += " /L:s /V:" + xData(4038) + " /R:no /RS:no /HC:" + xData(4035) +

" /SNAP:" + xData(4037);

Command += " /M normal /D " + Label + " /J " + Label;

if (BackupToTape())

{

if (overwrite)

Command += " /N " + Label + " /P \"" + xData(4032) + "\" /UM";

else

Command += " /T " + Label + " /A";

}

if (BackupToDisk())

{

Command += " /N " + Label + " /f \"" + xData(4040) + "\\" +

TimeStr().substr(0,8) + SetName + ".bkf\""

}

return(Command);

}

 

 

 

function BackupLabel(text)

{

var label="";

if (text != "") text = " " + text + " ";

else text =" ";

label = GetData_CompName() + text + TimeStr().substr(0,8) + " Backup";

return(label);

}

 

 

 

function BackUpSet(n)

{

var x;

switch (n)

{

case 1: x=xData(4051);

break;

case 2: x=xData(4052);

break;

case 3: x=xData(4053);

break;

case 4: x=xData(4054);

break;

default:

x="";

break;

}

return(x);

}

 

 

 

function BackupToDisk()

{

if (xData(4030)=="disk") return(true);

else return(false);

}

 

 

 

function BackupToTape()

{

if (xData(4030)=="tape") return(true);

else return(false);

}

 

 

 

function BackUpUtil()

{

return(xData(4002));

 

}

 

 

 

function BackupRun(TapeDevice, NewLabel, Set, BackupStatus, LogHandle)

{

var CurrentLabel, Status=BackupStatus, FirstSet, ExitCode;

 

if (BackUpSet(Set) == "") return(BackupStatus);

 

FirstSet = (BackupStatus & Flag("firstset")) == Flag("firstset");

if (BackupToTape()) CurrentLabel = TapeLabel(TapeDevice, LogHandle);

if (BackupToDisk() || (BackupToTape() && (CurrentLabel !="")))

{

ExitCode = Backup(BackupArgs(NewLabel, BackUpSet(Set), FirstSet),

LogHandle);

ConCatenateLogs(FirstSet, LogHandle);

Status = Status & (~ Flag("firstset"));

if (ExitCode != 0) Status = (Flag("results") << (Set-1)) | Status;

}

else Status = (Status & (~ Flag("firstset")) ) | (Flag("results") <<

(Set-1));

return(Status);

}

 

 

 

function ConCatenateFile()

{

return(xData(1011) + "\\" + xData(4005));

}

 

 

 

function ConCatenateLogs(mode, FileHandle)

{

IoLogEvent("open", FileHandle, "");

if (mode)

{

FileHandle.Write("Creating log - " + ConCatenateFile() + "\n");

command = "cmd.exe /c type \"" + xData(4006) + "\" > \"" + ConCatenateFile()

+ "\"";

}

else

{

FileHandle.Write("Appending to " + ConCatenateFile() + "\n");

command = "cmd.exe /c type \"" + xData(4006) + "\" >> \"" +

ConCatenateFile() + "\"";

}

IoLogEvent("close", FileHandle, "");

FsRunExtProg(command , true, FileHandle);

return(0);

}

 

 

 

function ContinueBackup(CurrentStatus, FileHandle)

{

var Abort=0, LogF=0x10000000;

Abort = CurrentStatus & xData(4026);

 

if (FsLogFlag(LogF))

{

IoLogEvent("open", FileHandle, "exception_check");

IoLogEvent("content", FileHandle, "exception status code: " + Abort);

IoLogEvent("close", FileHandle, "");

}

return((Abort==0));

}

 

 

 

function Flag(which)

{

var answer;

 

switch (which)

{

case "label": //Command line label parameter

answer = 0x1;

break;

 

case "no_tape": // Tape not available

answer = 0x2;

break;

 

case "no_guid": //tape drive GUID not specified

answer = 0x4;

break;

 

case "disk_path": //path for backup-to-disk available

answer = 0x8

break;

 

case "firstset": //the first backup set has not been done yet

answer = 0x10;

break;

 

case "results": //base for pass fail flags for each set

answer = 0x100;

break;

 

default:

answer = 0;

break;

}

return(answer);

}

 

 

 

function Tape_Eject(MediaName, LogHandle)

{

rsm("eject /pf\"" + MediaName + "\" /astart", LogHandle, 1);

}

 

 

 

function TapeInitialisation(LogHandle)

{

var Device="";

if (xData(4034)=="") return(Device);

TapeLog("create", "Busted Networks Ltd. Tape Log " + TimeStr().substr(0,8) +

"\n");

Device = GetData_TapeDrive(LogHandle);

if (Device=="") return(Device);

if (TapeLabel(Device, LogHandle)=="") Device="";

return(Device);

}

 

 

 

function TapeLabel(Drive, LogHandle)

{

var result="", i, tempstr="";

if (xData(4030)!="tape") return(1);

Tape_PollDrive(LogHandle);

result = rsm("view /tphysical_media /cg" + xData(4034), LogHandle, 1);

for(i=0;i<result.length;i++)

{

tempstr="";

while ( (result.substr(i,1)!="\"") && (i<result.length) ) i++;

i++;

while ( (result.substr(i,1)!="\"") && (i<result.length) )

{

tempstr += result.substr(i,1);

i++;

}

i++;

switch (tempstr)

{

case "PHYSICAL_MEDIA": tempstr=""; break;

case "The command completed successfully.": tempstr=""; break;

default:

i = result.length;

break;

}

}

return(tempstr);

}

 

 

 

function TapeLog(mode, data)

{

var fso = new ActiveXObject("Scripting.FileSystemObject");

var ForReading = 1, ForWriting = 2, ForAppending = 8, f;

switch (mode)

{

case "create":

f = fso.OpenTextFile(TapeLogFile(), ForWriting, true);

break;

case "append":

f = fso.OpenTextFile(TapeLogFile(), ForAppending, true);

break;

default:

return(1);

}

f.Write(data);

f.Close();

return(0);

}

 

 

 

function TapeLogFile()

{

return(xData(1011) + "\\" + xData(4004));

}

 

 

 

function Tape_PollDrive(LogHandle)

{

var result="", i=0, tempstr="";

if (xData(4030)!="tape") return("");

rsm("refresh /lg\""+ xData(4034) + "\"", LogHandle, 1);

tempstr="";

while ( (result.substr(i,1)!="\"") && (i<result.length) ) i++;

i++;

while ( (result.substr(i,1)!="\"") && (i<result.length) )

{

tempstr += result.substr(i,1);

i++;

}

i++;

Sleep(xData(4033)*60);

return(tempstr);

}

 

 

 

//

============================================================================

// JScript Library module: time and date functions

// Author: David Hewison

// Version: 2007.02.01.01

//

// ===========================[

functions ]====================================

 

 

// [TimeDate Library]

 

function DateInfo()

{

var Today, year, month, day, wsh, datestr;

Today = new Date();

wsh = WScript.createObject("WScript.Shell");

 

day = Today.getDate();

month = Today.getMonth()+1;

year = Today.getYear();

datestr = StrNumToStr(year.toString(),4) + "-" +

StrNumToStr(month.toString(),2) + "-" + StrNumToStr(day.toString(),2);

return(datestr);

}

 

 

 

 

function Sleep(seconds)

{

WScript.Sleep(seconds * 1000);

return(0);

}

 

 

 

 

function TimeInfo()

{

var Today, wsh, timestr;

Today = new Date();

wsh = WScript.createObject("WScript.Shell");

 

timestr = StrNumToStr(Today.getHours(),2) + ":" +

StrNumToStr(Today.getMinutes(),2) + ":" + StrNumToStr(Today.getSeconds(),2);

return(timestr);

}

 

 

 

function TimeStr()

{

var Today, year, month, day, hours, mins, secs, wsh, timestr;

Today = new Date();

wsh = WScript.createObject("WScript.Shell");

 

secs = StrIdxStr(Today.getSeconds(),2);

mins = StrIdxStr(Today.getMinutes(),2);

hours = StrIdxStr(Today.getHours(),2);

day = StrIdxStr(Today.getDate(),2);

month = StrIdxStr((Today.getMonth() +1),2);

year = Today.getFullYear().toString();

timestr = year + month + day + hours + mins + secs;

return(timestr);

}

 

 

 

//

============================================================================

// JScript Library module: xData

// Author: David Hewison

// Version: 2006.08.16.01

// Notes:

// This area is for the script configuration parameters.

// Configure your requiremets by modifying the answer lines.

//

// ===========================[

functions ]====================================

 

function xData(which)

{

var answer;

switch (which)

{

 

case 1: // Script label

answer = "bn-backup";

break;

 

case 2: // script version

answer = "3.41";

break;

 

// ----------[ Logging data]-------------------------------------------

 

case 1001: // Logging flags

answer = 0x0FFFBFF0;

break;

 

case 1011: // Log File Path

answer = "c:\\Logs";

break;

 

case 1012: // Log File Name

answer = "bn-backup.xml";

break;

 

case 1014: // Log Event Information Name

answer = "bn-backup";

break;

 

// ----------[ This System's exisiting configuration ] ----------------

 

 

case 2013: // This system's name

answer = GetData_CompName();

break;

 

case 2014: // This system's OS

answer = GetData_OS();

break;

 

// ----------[ Customer Data ]-----------------------------------------

 

case 3001: // Customer Company Name

answer = "OBC The Accountants";

break;

 

// --------[ Application data ]--------------------------------------

 

case 3111: // Is this an Exchange server (yes/no) ?

answer = "no";

break;

 

case 3112: // Exchange mailbox store rich text dB filename including full

path

answer = "c:\\program Files\\Exchsrvr\\mdbdata\\priv1.edb";

break;

 

case 3113: // Exchange mailbox store streaming dB filename including full

path

answer = "c:\\program Files\\Exchsrvr\\mdbdata\\priv1.stm";

break;

 

case 3114: // Exchange public store rich text dB filename including full

path

answer = "c:\\program Files\\Exchsrvr\\mdbdata\\pub1.edb";

break;

 

case 3115: // Exchange public store streaming dB filename including full

path

answer = "c:\\program Files\\Exchsrvr\\mdbdata\\pub1.stm";

break;

 

case 3121: // Is this a Sharepoint server (yes/no) ?

answer = "no";

break;

 

case 3122: // STS Admin utility path

answer = "\"C:\\Program Files\\Common Files\\Microsoft Shared\\web server

extensions\\60\\BIN\\stsadm.exe\"";

break;

 

case 3123: //STS backup file with full path

answer = "d:\\admin\\backup\\STS\\sitebackup.dat";

break;

 

case 3124: //STS site url

answer = "http://companyweb/";

break;

 

case 3131: //Is this a SQL server

answer = "no";

break;

 

case 3140: //Name of SQL Server Instance 1

answer = "";

break;

 

case 3141: //Name of SQL Instance 1\database1

answer = "model";

break;

 

case 3142: //Name of SQL Instance 1\database2

answer = "";

break;

 

case 3143: //Name of SQL Instance 1\database3

answer = "";

break;

 

case 3144: //Name of SQL Instance 1\database4

answer = "";

break;

 

case 3145: //Name of SQL Instance 1\database5

answer = "";

break;

 

case 3146: //Name of SQL Instance 1\database6

answer = "";

break;

 

case 3147: //Name of SQL Instance 1\database7

answer = "";

break;

 

case 3148: //Name of SQL Instance 1\database8

answer = "";

break;

 

case 3149: //Name of SQL Instance 1\database9

answer = "";

break;

 

// ----------[ Backup Data ]-----------------------------------------------

 

case 4002: // Backup utility location

answer = "C:\\windows\\system32\\ntbackup.exe";

break;

 

case 4003: // Temporary work file

answer = "bn-temp.log";

break;

 

case 4004: // Tape utility log

answer = "bn-tape.log";

break;

 

case 4005: // Concatenation file for multiple logs

answer = "bn-backup.log";

break;

 

case 4006: // Backup program's logfile location

answer = "C:\\Documents and Settings\\";

answer += xData(4007);

answer += "\\Local Settings\\Application Data\\Microsoft";

answer += "\\Windows NT\\NTbackup\\Data\\backup01.log";

break;

 

case 4007: // Backup user profile folder name

answer = "administrator";

break;

 

case 4021: // This script's email address

answer = "test" + "@" + xData(4022);

break;

 

case 4022: // Public DNS domain

answer = "test domain";

break;

 

case 4023: // Service monitor email address

answer = "testuser@test.com";

break;

 

case 4024: //Enable email (yes/no)?

answer = "yes";

break;

 

case 4026: // Abort flags

answer = (Flag("results") * 0xF) | Flag("no_tape") | Flag("no_guid") |

Flag("disk_path");

break;

 

case 4030: // Backup device? Currently supports 'tape' or 'disk'

answer = "tape";

break;

 

case 4031: // Eject tape after backup?

answer = "no";

break;

 

case 4032: // Media Pool to use

answer = "LTO Ultrium";

break;

 

case 4033: // Tape drive settling time in minutes

answer = 1;

break;

 

case 4034: //Tape drive to use specified by its rsm GUID

// -to find the rsm GUID use: rsm view /tlibrary /guiddisplay

answer = "895140920AFC450C8D134D70BD0A5132";

break;

 

case 4035: //Enable (on) or disable (off) hardware compression

answer = "on";

break;

 

case 4037: //Enable (on) or disable (off) shadow copying

answer = "on";

break;

 

case 4038: //Verify after backup (yes/no)?

answer = "yes";

break;

 

case 4040: //Destination for disk based backups

answer = "";

break;

 

case 4041: //Disk folder for temporary sql backup files

answer = "";

break;

 

case 4051: // backup set 1

answer = "@c:\\scripts\\backup.bks";

break;

 

 

 

default:

answer = "";

break;

}

return(answer);

}

  • Replies 1
  • Created
  • Last Reply
Guest dhewison
Posted

Re: Backup Query

 

 

Hi,

 

The script needs the full four sets specify in the configuration

(xData) section, add the following lines back in:

 

case 4052: // backup set 2

answer = "";

break;

 

case 4053: // backup set 3

answer = "";

break;

 

case 4054: // backup set 4

answer = "";

break;

 

The script reads through the four backup sets, if a set string is

empty the it does not attempt to action it. So to run one set as you are

doing simply specify your bks set in one of the set strings (usually the

first as you did) and set the other three to empty, i.e. "".

 

David Hewison

 

 

--

dhewison

------------------------------------------------------------------------

dhewison's Profile: http://forums.techarena.in/members/dhewison.htm

View this thread: http://forums.techarena.in/windows-server-help/1058141.htm

 

http://forums.techarena.in


×
×
  • Create New...