Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 546
  • Last Modified:

Run vbscript to change configs on all nodes in nagios network

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
jleleux
Asked:
jleleux
  • 3
2 Solutions
 
internetsavantCommented:
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
 
Jared LukerCommented:
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
 
Jared LukerCommented:
oops... you'll need to dim objFSO since you have Option Explicit turned on
0
 
jleleuxAuthor Commented:
Ok got a new error, permission denied.  Can set it up to use certain user credentials?
0
 
Jared LukerCommented:
It's probably easier just to run it from a command window with elevated credentials

runas /user:domain\username cmd.exe
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now