[Webinar] Streamline your web hosting managementRegister Today

x
?
Solved

Run vbscript to change configs on all nodes in nagios network

Posted on 2009-05-15
5
Medium Priority
?
550 Views
Last Modified: 2012-06-22
I have about 12 windows servers that I monitor w/ nagios.  I manage all the configs and scripts from my laptop.  As of right now I have to go to each server and run my config update script.  What I want to do is to write a script that I can run on my laptop that will update all the windows server configs simultaneously.  I also want the script to be able to add a line of configuration, but when script writes to the file, it clears the whole file and only adds the line I want to add.  I started work on one but it only looks for the files on my computer.  I am including the code that I have already.
Option Explicit 
Dim file, objFile, objFSO
Dim objShell
Dim command, objExecObject
Dim aMachines, strMachines, machine
 
strMachines = "IP addresses separated by comma w/ no spaces"
aMachines = Split(strMachines, ",")
 
For Each machine In aMachines
	command = "cmd /c xcopy ""P:\Departments\Information Technology\Scripts\chk_syslog_ntfs.vbs"" c:\progra~1\NSClient++\"	
	Set objShell = CreateObject("Wscript.Shell")
	Set objExecObject = objShell.Exec(command)
	
	file = "C:\Program Files\NSClient++\NSC.ini"
	Const ForAppending = 2
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	Set objFile = objFSO.OpenTextFile(file, ForAppending)
	objFile.WriteLine("check_syslog_ntfs=chk_syslog_ntfs.vbs")
Next
 
If Err.number = vbEmpty Then
	Set objShell = CreateObject("WScript.Shell")
	objShell.run ("Explorer" &" " & file & "\" )
Else WScript.echo "VBScript Error: " & Err.number
End If
 
WScript.Quit

Open in new window

0
Comment
Question by:jleleux
  • 3
5 Comments
 
LVL 4

Assisted Solution

by:internetsavant
internetsavant earned 300 total points
ID: 24397144
well to start out.  ForWriting is 2, ForAppending is 8 so the reason your file is overwriting instead of appending is because you're telling it to.  Example below:

http://www.computerperformance.co.uk/vbscript/vbscript_file_opentextfile.htm


Second, you need to specify the UNC path of your hosts in your loop:

file = "\\" & machine & "C$\Program Files\NSClient++\NSC.ini"

http://msdn.microsoft.com/en-us/library/aa711216(VS.71).aspx


Third, 'that will update all the windows server configs simultaneously" is not correct -- via scripting unless you made it thread somehow (don't know if that's possible in VBS), it will happen sequentially in your loop.



0
 
LVL 17

Accepted Solution

by:
Jared Luker earned 1200 total points
ID: 24397285
See if this works for you:
Option Explicit 
Dim file, objFile, objFSO
Dim objShell
Dim command, objExecObject
Dim aMachines, strMachines, machine
 
Const ForAppending = 8
Const ForWriting = 2
Const ForReading = 1
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
strMachines = "IP addresses separated by comma w/ no spaces"
aMachines = Split(strMachines, ",")
 
For Each machine In aMachines
	objFSO.CopyFile "P:\Departments\Information Technology\Scripts\chk_syslog_ntfs.vbs","\\" & machine & "\c$\progra~1\NSClient++\"	
 
	file = "C:\Program Files\NSClient++\NSC.ini"
	Set objFSO = CreateObject("Scripting.FileSystemObject")
	Set objFile = objFSO.OpenTextFile(file, ForAppending)
	objFile.WriteLine("check_syslog_ntfs=chk_syslog_ntfs.vbs")
Next
 
If Err.number = vbEmpty Then
	Set objShell = CreateObject("WScript.Shell")
	objShell.run ("Explorer" &" " & file & "\" )
Else WScript.echo "VBScript Error: " & Err.number
End If
 
WScript.Quit

Open in new window

0
 
LVL 17

Expert Comment

by:Jared Luker
ID: 24397295
oops... you'll need to dim objFSO since you have Option Explicit turned on
0
 
LVL 1

Author Comment

by:jleleux
ID: 24398045
Ok got a new error, permission denied.  Can set it up to use certain user credentials?
0
 
LVL 17

Expert Comment

by:Jared Luker
ID: 24398500
It's probably easier just to run it from a command window with elevated credentials

runas /user:domain\username cmd.exe
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Not long ago I saw a question in the VB Script forum that I thought would not take much time. You can read that question (Question ID  (http://www.experts-exchange.com/Programming/Languages/Visual_Basic/VB_Script/Q_28455246.html)28455246) Here (http…
With User Account Control (UAC) enabled in Windows 7, one needs to open an elevated Command Prompt in order to run scripts under administrative privileges. Although the elevated Command Prompt accomplishes the task, the question How to run as script…
Is your OST file inaccessible, Need to transfer OST file from one computer to another? Want to convert OST file to PST? If the answer to any of the above question is yes, then look no further. With the help of Stellar OST to PST Converter, you can e…
How to fix display issue, screen flickering issue when I plug in power cord to the machine. Before I start explaining the solution lets check out once the issue how it looks like after I connect the power cord. most of you also have faced this…
Suggested Courses

591 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question