Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Run file

Posted on 2008-11-01
5
246 Views
Last Modified: 2010-04-24
vbs code that do the following.

1. check whether any data is received by lan /network or not
2. if not data received for last 10 mintues, terminate specified process.
3. run specified program
4. loop repeats after every 15 minutes.
0
Comment
Question by:ankur3020
  • 3
5 Comments
 
LVL 32

Accepted Solution

by:
Robberbaron (robr) earned 500 total points
ID: 22875644
schedule this script to run every 15min

save file as checker.vbs or similar

Wscript.Timeout = 650  'seconds
 
Wscript.Echo "Script Start"
 
'get traffic in 10min
GetTraffic "localhost", bytesStart
Wscript.Sleep 600000   '10 minutes=600000 millisecs
GetTraffic "localhost", bytesEnd
 
If bytesEnd = bytesStart Then
  'no traffic
  KillProcess  "MyAppName"
  'start application
  
  Set WshShell = WScript.CreateObject("WScript.Shell")
  WshShell.Run "MyNextApp.exe"
 
End if
 
WScript.quit
 
Sub KillProcess(strComputername,processName)
	strComputer = strComputername  '"."
	Set objWMIService = GetObject("winmgmts:" _
	    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
	Set colProcessList = objWMIService.ExecQuery _
	    ("SELECT * FROM Win32_Process WHERE Name = '" & processName & "'")
	For Each objProcess in colProcessList
	    objProcess.Terminate()
	Next
End Sub
 
Sub GetTraffic(strComputername,bytesTotal)
  'List the network interfaces on the computer. These can be used to find the packets and network traffic
  Dim oSvc
  set oSvc = GetObject("winmgmts:\\" & strComputername & "\root\cimv2")
  wqlQuery = "Select * from Win32_PerfRawData_Tcpip_NetworkInterface"
  bytesTotal=0
  for each oData in oSvc.ExecQuery(wqlQuery)
    
    for each oProperty in oData.Properties_
 
      if oProperty.Name = "BytesReceivedPersec" then
        
        bytesTotal = oProperty.Value
 
      end if      
    next
  next
 
End Sub

Open in new window

0
 

Author Comment

by:ankur3020
ID: 22876818
i ran the code and found one error. plsrectify it. the code i used is attached for ur ref.
i got error in line 12, killprocess,  error is invalid property /argument.
 pls tell me what is meaning of timeout, and for how long script will run.

i have replaced the process name with my actual process. one thing i want to know that r u comparing value or data received at different times or data sent.
Wscript.Timeout = 650  'seconds
 
Wscript.Echo "Script Start"
 
'get traffic in 10min
GetTraffic "localhost", bytesStart
Wscript.Sleep 600   '10 minutes=600000 millisecs
GetTraffic "localhost", bytesEnd
 
If bytesEnd = bytesStart Then
  'no traffic
  KillProcess  "BBClient.exe"
  
  'start application
  
  Set WshShell = WScript.CreateObject("WScript.Shell")
  WshShell.Run "BBClient.exe"
 
End if
 
WScript.quit
 
Sub KillProcess(strComputername,processName)
	strComputer = strComputername  '"."
	Set objWMIService = GetObject("winmgmts:" _
	    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
	Set colProcessList = objWMIService.ExecQuery _
	    ("SELECT * FROM Win32_Process WHERE Name = '" & processName & "'")
	For Each objProcess in colProcessList
	    objProcess.Terminate()
	Next
End Sub
 
Sub GetTraffic(strComputername,bytesTotal)
  'List the network interfaces on the computer. These can be used to find the packets and network traffic
  Dim oSvc
  set oSvc = GetObject("winmgmts:\\" & strComputername & "\root\cimv2")
  wqlQuery = "Select * from Win32_PerfRawData_Tcpip_NetworkInterface"
  bytesTotal=0
  for each oData in oSvc.ExecQuery(wqlQuery)
    
    for Each oProperty in oData.Properties_
 
      if oProperty.Name = "BytesReceivedPersec" then
        
        bytesTotal = oProperty.Value
 
      end if      
    next
  next
 
End Sub

Open in new window

0
 

Author Comment

by:ankur3020
ID: 22877989
i made the required changes and it is working fine now.thanks
0
 

Author Closing Comment

by:ankur3020
ID: 31512445
thks
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying 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

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 …
This script will sweep a range of IP addresses (class c only, 255.255.255.0) and report to a log the version of office installed. What it does: 1.)      Creates log file in the directory the script is run from (if it doesn't already exist) 2.)      Sweep…
In an interesting question (https://www.experts-exchange.com/questions/29008360/) here at Experts Exchange, a member asked how to split a single image into multiple images. The primary usage for this is to place many photographs on a flatbed scanner…

828 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