Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Ping Statistik in ein Logfile wegschreiben

Frage Entwicklung Batch & Shell

Mitglied: mhuelse

mhuelse (Level 1) - Jetzt verbinden

02.02.2006, aktualisiert 05.02.2006, 13936 Aufrufe, 12 Kommentare

Mittels eines scriptes soll ein Pingstatistik erzeugt werden und zwar so, das alle nummerischen Ausgaben des pings in eine Logdatei via tabstop wegeschrieben werden.

Hier ist mein bisheriges script, was leider nicht ganz vollständig ist da es erstens, nicht alle Werte enthält und zweitens, die die es enthält noch mit Einheiten (ms) behaftet sind. Weiterhin erzeugt es ein CR/LF am ende einer jeden Zeile im Logfile was unschön ist.

/*my script*/
SET /P count=wie oft?
SET /P braek=pause?
SET /P ipadr=ipadr?
:Again
for /f "tokens=1,3,6,9 Delims=, " %%i IN ('ping %ipadr% -n 8^|find "Minimum"') do @echo %time% %%j %%k %%l >>C:\TEMP\ping.log
wait %pause%
set /a count=count-1
cls
echo %count%
IF %count% GTR 0 Goto Again:
/*my srcript end*/


Perfekt wäre es, wenn es in der Form ein Logfile kreieren würde, Beispiel;

Time stamp_tab_IP-Adr_tab_Bytes_tab_Zeit_tab_TTL_tab_gesendet_tab_empfangen_tab_verloren_tab_Minimum_tab_Maximum_tab_Mittelwert
oder
2006.01.01_tab_00:00:00_tab_127.0.0.1_tab_32_tab_128_tab_8_tab_8_tab_0_tab_10_tab_30_tab_20
2006.01.01_tab_00:00:10_tab_127.0.0.1_tab_32_tab_128_tab_8_tab_8_tab_0_tab_20_tab_60_tab_40
Mitglied: Tundra
03.02.2006 um 08:16 Uhr
Hallo Matthias,

warum baust Du Dir nicht ein vbscript?
Du schreibst das Ping-Ergebnis in einer Temp-Datei und liest sie danach aus.
Anschließend schreibst die ausgelesenen Werte in ein Log-File.

Grüße
Guido
Bitte warten ..
Mitglied: Tundra
03.02.2006 um 08:59 Uhr
<pre>
'ping-Statistik
'03.02.2006/ge

Option Explicit

const C_Log = "c:\Log"
const C_IP = "10.49.166.194"
const C_Anzahl = "2" 'Wie oft soll der Ping wiederholt werden
const C_Pause = "2" 'Pause zwischen den Pings in Sek.

DIM O_File
DIM O_Shell
DIM O_Log
DIM L_Input
DIM G_Ping
DIM G_Anzahl
DIM G_ToDo

Set O_File = CreateObject("Scripting.FileSystemObject")
Set O_Shell = createObject("Wscript.Shell")
Set O_Log = O_File.OpenTextFile(C_Log & "\ping_" & C_IP & ".log",2,true)

call S_Run

'
'Starte das Hauptscript
sub S_Run
O_Log.writeline "Start am/um " & now
O_Log.writeline "IP-Adresse: " & C_IP
O_Log.writeline "Ping-Anzahl: " & C_Anzahl
O_Log.writeline " "
call S_Ping
O_Log.writeline " "
O_Log.writeline "Ende am/um " & now
end sub

'Ping den Rechner an
sub S_Ping
DIM O_StartTmp
DIM i
for i = 1 to C_Anzahl
Set O_StartTmp = O_File.OpenTextFile(C_Log & "\ping_" & C_IP & "_Start.tmp",2,true)
O_StartTmp.writeline time
Set O_StartTmp = nothing
O_Shell.run "cmd /c ping " & C_IP & " -n 1 > " & C_Log & "\ping_" & C_IP & "_" & i & ".tmp",0,true
O_Log.writeline i & ") " & vbTab & F_Ping(C_Log & "\ping_" & C_IP & "_" & i & ".tmp")
O_File.DeleteFile(C_Log & "\ping_" & C_IP & "_Start.tmp") 'löschen Zeitstempel
O_File.DeleteFile(C_Log & "\\ping_" & C_IP & "_" & i & ".tmp") 'lösche Pingwert
wscript.sleep C_Pause * 1000
Set O_StartTmp = nothing
Next
end sub

'Temp-Datei auswerten und Log-File bauen
function F_Ping(P_Datei)
DIM O_Zeit
DIM O_Input
DIM L_Zeit
DIM L_Zeile
DIM L_Split

Set O_Zeit = O_File.OpenTextFile(C_Log & "\ping_" & C_IP & "_Start.tmp",1,false)
L_Zeit = O_Zeit.Readline

set O_Input = O_File.OpenTextfile(P_Datei,1,false)
do until O_Input.AtEndOfstream
L_Zeile = O_Input.Readline
if instr(L_Zeile,"Pakete") > 0 then
L_Split = Split(L_Zeile,",")
F_Ping = L_Zeit & vbtab & "G " & right(L_Split(0),2) & " E " & right(L_Split(1),2) & " V " & mid(L_Split(2),12,3)
end if
loop
end function

</pre>

Grüße
Guido
Bitte warten ..
Mitglied: mhuelse
03.02.2006 um 14:35 Uhr
Hallo Matthias,

warum baust Du Dir nicht ein vbscript?
Du schreibst das Ping-Ergebnis in einer
Temp-Datei und liest sie danach aus.
Anschließend schreibst die
ausgelesenen Werte in ein Log-File.

Grüße
Guido


An sich auch mein erster Gedanke gewesen, aber es sollte ja mal schnell gehen und da fiel mir noch die gute alte *.bat aus alten Tagen ein. In Google schnell nach den nötigen Befehlen bzw. deren Syntax gesucht und fix was gebastelt.

cio
Mathias
Bitte warten ..
Mitglied: mhuelse
03.02.2006 um 14:37 Uhr
Danke für die schnelle Antwort und werde das script heute Abend mal testen. DANKE!

Mathias
Bitte warten ..
Mitglied: Tundra
03.02.2006 um 16:41 Uhr
Hi,

es kein Thema, es Deinen Wünschen weiter anzupassen.

Grüße
Guido
Bitte warten ..
Mitglied: Biber
03.02.2006 um 17:27 Uhr
Moin mhuelse,

als Batchfile sähe es so aus:
::---snipp Dauerping.bat
::/*my script*/
@echo off & setlocal
SET /P "count=wie oft? "
::--- nicht verstanden SET /P "break=pause? "
SET /P "ipadr=ipadr? "
:Again
echo ...noch %count% Ping-Tests mit %ipadr%
Ping %ipadr% -n 8 >%temp%\thisping.log
for /F "delims==,( skip=2 tokens=2,4,6" %%i in ('find "Pakete" thisping.log') do Set "SEND_RECV_LOST=%%i %%j %%k"
for /F "delims==, skip=2 tokens=2,4,6" %%i in ('find "Minimum" thisping.log') do Set "MIN_MAX_AVG=%%i %%j %%k"
echo %date% %time% %ipadr% %SEND_RECV_LOST% %MIN_MAX_AVG% >>Dauerping.log
::--- nicht verstanden wait %pause%
set /a count=count-1
IF %count% GTR 0 Goto Again:
goto :eof
:: /*my srcript end*/
::--snapp Dauerping.bat

>type Dauerping.log
03.02.2006 17:20:49,53 10.xxx.99.99 8 8 0 0ms 5ms 0ms
03.02.2006 17:20:57,95 10.xxx.99.99 8 8 0 0ms 5ms 0ms
03.02.2006 17:21:06,33 10.xxx.99.99 8 8 0 0ms 5ms 0ms

Die Syntax mit dem Befehl "wait %pause%" kenn ich nicht - ggf. entkommentieren.
Zwischen den parametern natürlich TABs eingeben, auch wenn hier nur Leerzeichen angezeigt werden.
HTH Biber
Bitte warten ..
Mitglied: mhuelse
03.02.2006 um 22:10 Uhr
Das ist schon so wie ich es mir vorgestellt habe, allerdings will ich nur die nummerischen Werte der MIN, MAX und AVG, so zusagen ohne das ms hinten dran hängt.

Der Pause string soll eigentlich nur mit einem externen "wait.exe" Befehl eine defenierte Zeit abwarten und danach den nächsten Ping (-n 8 Block) absetzen. Das war in meinem Beispielscript leider noch mit der falschen variable definiert
Bitte warten ..
Mitglied: Biber
03.02.2006 um 23:02 Uhr
::---snipp Dauerping.bat Vers. 0.02
::/*my script*/
@echo off & setlocal
SET /P "count=wie oft? "
SET /P "waitsecs=Wieviel Sek. Pause zwischen Pings? "
SET /P "ipadr=ipadr? "
:Again
echo ...noch %count% Ping-Tests mit %ipadr%
Ping %ipadr% -n 8 >%temp%\thisping.log
for /F "delims==,( skip=2 tokens=2,4,6" %%i in ('find "Pakete" thisping.log') do Set "SEND_RECV_LOST=%%i %%j %%k"
for /F "delims==, skip=2 tokens=2,4,6" %%i in ('find "Minimum" thisping.log') do Set "MIN_MAX_AVG=%%i %%j %%k"
Set "MIN_MAX_AVG=%MIN_MAX_AVG:ms=%"
echo %date% %time% %ipadr% %SEND_RECV_LOST% %MIN_MAX_AVG% >>Dauerping.log
wait %waitsecs%
set /a count=count-1
IF %count% GTR 0 Goto Again
goto :eof
:: /*my srcript end*/
::--snapp Dauerping.bat Vers.0.02

Falls Wait.exe nicht Sekunden erwartet, sondern Millisekunden, dann noch:
Set "/a waitsecs*=1000"
...einbauen nach dem Set /P waitsecs.

Gruß Biber
Bitte warten ..
Mitglied: mhuelse
04.02.2006 um 13:06 Uhr
Super script, nur kannst du mir mal erklären wie das mit dem Set Befehl funktioniert, scheint mir derzeit noch unlogisch

"Set "MIN_MAX_AVG=%MIN_MAX_AVG:ms=%"

Grüße Mathias
Bitte warten ..
Mitglied: Biber
04.02.2006 um 22:05 Uhr
Moin mhuelse,

das, was vielleicht auf den ersten Blick etwas verwirrend aussieht, ist der Wechseln/Ersetzen-Befehl des CMD-Interpreters.

Musst Du Dir langsam klarmachen: eine CMD/Batch-Variable wird immer eingeschlossen durch zwei Prozentzeichen. Beispiel
%MIN_MAX_AVG% ....hat den Wert "0ms 4ms 2ms"

Mit diesen Wert kann ich mit der Syntax
%MIN_MAX_AVG:StringAlt=StringNeu%
eine vorhandene "alte" Zeichenkette durch eine neue ersetzen.

Im konkreten Fall will ja alle Zeichenketten "ms" durch "(nichts)" ersetzen.
Deshalb: %MIN_MAX_AVG:ms=%
Und diesen Wert weise ich wieder der ursprünglichen Variablen zu.
Deshalb
Set MIN_MAX_AVG=%MIN_MAX_AVG:ms=% bzw.
Set "MIN_MAX_AVG=%MIN_MAX_AVG:ms=%"

Nichtsdestotrotz, das ist halt eine der möglichen Batchvarianten. Ebenso wäre aber auch Tundras VBSkript-Lösung geeignet, da steckt genauso Arbeit drin.

Schönes Wochenende
Biber
Bitte warten ..
Mitglied: mhuelse
05.02.2006 um 00:02 Uhr
Danke für deine Erläuterung. Ihr habt's echt drauf, alle Achtung. Danke nochmal.

Das VB script ist auch nicht schlecht, nur wird es auf dem (Test-) Laptop nicht laufen, da dort keine VBS Umgebung vorhanden ist bzw. nicht gewünscht ist.

Ansonsten noch mal ne andere Frage; Kennt sich hier jemand mit REXX aus, speziel mit Datumsarithmetik?
Ich weis das gehört hier nicht wirklich rein, aber in den Kategorien hab ichs nicht gefunden.

Grüße Mathias
Bitte warten ..
Mitglied: Biber
05.02.2006 um 13:53 Uhr
Moin Mathias,

>>Ansonsten noch mal ne andere Frage;
Neue Frage == Neuer Beitrag
>>Kennt sich hier jemand mit REXX aus, speziel mit Datumsarithmetik?
Das werden wir nur herausfinden, wenn Du eine Frage "REXX - Frage zur Datumsarithmetik" postest...

Hier in diesem Beitrag würde es jedenfalls untergehen.
Schönen Sonntag
Biber
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Google Android
ANDROID - PING (2)

Frage von MrRobot1997 zum Thema Google Android ...

Netzwerkgrundlagen
gelöst Ping im gleichen Rechnernetz ohne Gateway möglich? (8)

Frage von CHRISTI4N zum Thema Netzwerkgrundlagen ...

Entwicklung
Ping per Lua Script (1)

Frage von fuddel18 zum Thema Entwicklung ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

Microsoft Office
Keine Updates für Office 2016 (11)

Frage von Motte990 zum Thema Microsoft Office ...