Solved

Run vbscript to change configs on all nodes in nagios network

Posted on 2009-05-15
5
533 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 100 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 400 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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

When it comes to writing scripts for a Client/Server computing environment it is essential to consider some way of enabling the authentication functionality within a script. This sort of consideration mainly comes into the picture when we are dealin…
Introduction During my participation as a VBScript contributor at Experts Exchange, one of the most common questions I come across is this: "I have a script that runs against only one computer. How can I make it run against a list of computers in …
A short film showing how OnPage and Connectwise integration works.
With Secure Portal Encryption, the recipient is sent a link to their email address directing them to the email laundry delivery page. From there, the recipient will be required to enter a user name and password to enter the page. Once the recipient …

932 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

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now