Run file

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.
ankur3020Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Robberbaron (robr)Commented:
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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
ankur3020Author Commented:
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
ankur3020Author Commented:
i made the required changes and it is working fine now.thanks
0
ankur3020Author Commented:
thks
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
VB Script

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.