webForumDet fria alternativet

ping script

.NET

3 svar · 315 visningar · startad av acka

Medlem sedan jan. 2001716 inlägg
Frågan#1

Hej
Försöker få ett script att pinga en nod och returnera enbart resultatet (svarstid)

Lyckades lägga vantarna på ett script som jag vet fungerar.
Kan dock vara så att han kör det på en svensk XP och jag kör det på en engelsk XP

Hur som helst fungerar det inte för mig och jag är en noob när det gäller VBscript så jag kan inte lösa det.
Kanske kan någon av er hjälpa mig.

Scriptet ser ut så här.

'Syntax = cscript.exe //NoLogo PingStat.vbs <datornamn eller ip>
'
'

Option Explicit
Dim objArgs, oShell, CmdOutput, M_Value, I, ArrStr, Cmd

'Här ställer man in defaultvärde
M_Value=2000

Set objArgs = WScript.Arguments
Set oShell = CreateObject("Wscript.Shell")
	Set Cmd = oShell.Exec("ping " & wscript.arguments(0))
	While Not Cmd.StdOut.AtEndOfStream
	CmdOutput = UCase(Cmd.StdOut.Readline())
	If InStr(CmdOutput,"MEDEL") Then
		ArrStr=Split(CmdOutput)
		M_Value=ArrStr(14)
	End if
	Wend
	
	'For I=0 to UBound(ArrStr)
	'wscript.echo  I & "=" & arrstr(I)
	'Next
	

wscript.echo M_Value

När jag sen ska köra scriptet så skrivar jag i cmd tex.

cscript.exe //NoLogo PingStat.vbs 192.36.125.18 > test.txt

Och då var min förhoppning att jag skulle få svarstiden från https://www.sunet.se till min txt fil.
Men det enda som den exporterar dit är M_Value värdet som är 2000.

Är det någon som kan tipsa om vad som inte stämmer så skulle det vara guld värt :)

Tanken med detta är att jag sen ska använda det värdet till att lägga en graf i mrtg på svarstider till vissa noder.

/Red....
Vet inte om det hamnade rätt men någon får väl flytta den om den är i fel forum.

Medlem sedan okt. 20023 030 inlägg
#2

Felet är att 14 är utanför arrayen. Använd följande (fungerar iaf för mig):

'Syntax = cscript.exe //NoLogo PingStat.vbs <datornamn eller ip>
'
'

Option Explicit
Dim objArgs, oShell, CmdOutput, M_Value, I, ArrStr, Cmd

'Här ställer man in defaultvärde
M_Value=2000

Set objArgs = WScript.Arguments
Set oShell = CreateObject("Wscript.Shell")
	Set Cmd = oShell.Exec("ping " & wscript.arguments(0))
	While Not Cmd.StdOut.AtEndOfStream
	CmdOutput = UCase(Cmd.StdOut.Readline())
	If InStr(CmdOutput,"MEDEL") Then
		ArrStr=Split(CmdOutput)
		M_Value=ArrStr(UBound(ArrStr))
	End if
	Wend
	
	'For I=0 to UBound(ArrStr)
	'wscript.echo  I & "=" & arrstr(I)
	'Next
	

wscript.echo M_Value

cscript //NoLogo PingStat.vbs webforum.nu gav mig: 39MS som svar

Medlem sedan jan. 2001716 inlägg
#3

Tack Nexus..

Funkar kanon.
Sen om man byter ut MEDEL mot AVERAGE så funkar det i en eng version av operativ har jag listat ut :)

/AE

Medlem sedan okt. 20023 030 inlägg
#4

Jo jag märkte det jag med eftersom jag var tvungen att göra så. ;)

261 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)