Top-Themen

Aktuelle Themen (A bis Z)

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, 14205 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 ..
Ähnliche Inhalte
Datenbanken
Statistik über den Tag
Frage von 94451Datenbanken

Hallo Liebe Admins, ich möchte gerne eine Statistik generieren, in der ich auf einer Job_Protokoll Tabelle Prüfe wieviele Jobs ...

Firewall
Ping oder nicht Ping?
Erfahrungsbericht von LordGurkeFirewall10 Kommentare

Immer wieder erzählt mir jemand, dass man eine Firewall so konfigurieren soll, dass sie nicht auf ICMP-Echo-Requests ("Ping") antworten ...

Administrator.de Feedback
Administrator.de Statistiken zur Erheiterung oder Information der User?
Frage von LochkartenstanzerAdministrator.de Feedback10 Kommentare

Nachdem es wieder einige lange Threads gibt, kam mir die Idee, daß es doch ganz nett wäre ein paar ...

Batch & Shell
Logfile Unterordner
gelöst Frage von michi-ffmBatch & Shell7 Kommentare

Hallo Zusammen, hat jemand evtl einen Vorschlag? Ich möchte gerne das er mir sämtliche Dateien anzeigt die im Unterordner ...

Neue Wissensbeiträge
Microsoft Office

Office 2010 Starter erneut auf einer frischen Windows-Version installieren

Tipp von Lochkartenstanzer vor 16 StundenMicrosoft Office6 Kommentare

Moin, vor ein paar Tagen schlug bei mir ein Kunde auf, der sein Widnows 7 geschrottet und es inklusive ...

Datenbanken

Upgrade MongoDB 3.4 auf 3.6

Erfahrungsbericht von Frank vor 18 StundenDatenbanken

Seit kurzem gibt es das 3.6 Update für die MongoDB: Sicherheit, das Sortieren, Aggregation und auch die Performance wurde ...

SAN, NAS, DAS

Backdoor Zugang und Upload-Bug in vielen Western Digital MyCloud Geräten

Information von Frank vor 18 StundenSAN, NAS, DAS2 Kommentare

James Bercegay von der Firma Gulftech hat die Fehler an Western Digital gemeldet und das Unternehmen stellt bereits ein ...

Microsoft Office

Outlook 2016 - Beim Weiterleiten keine PDF Anhänge mehr - KB4011626 entfernen

Erfahrungsbericht von Deepsys vor 21 StundenMicrosoft Office3 Kommentare

Wenn ihr feststellt das ihr beim Weiterleiten von E-Mails keine PDF Anhänge mehr versendent, dann dankt Microsoft. Diese tolle ...

Heiß diskutierte Inhalte
Windows Netzwerk
Drucker isolieren in Windows Domäne
gelöst Frage von lcer00Windows Netzwerk14 Kommentare

Hallo zusammen, habe eine Windows-AD (2012R2) in der es einen Druckerserver gibt. Mittlerweile verliere ich das Vertrauen in die ...

Server-Hardware
Veeam Backup Server stürzt alle paar Tage ab
Frage von Leo-leServer-Hardware12 Kommentare

Hallo Forum, ich habe momentan folgendes Problem. Veeam Backup and Replication 9.5 u2 auf voll gepatchten DL 380 G7 ...

Batch & Shell
Dateien verschieben mit batch
gelöst Frage von michi-ffmBatch & Shell10 Kommentare

Hallo Zusammen hat jemand evtl eine Idee? Zunächst hier das Skript: Leider werden keine UNC-Pfade unterstüzt, kann mir jemand ...

LAN, WAN, Wireless
NETZWERKAUFBAU - VERKABELUNG - GRUNDLEGENDES
Frage von hobbymieterLAN, WAN, Wireless10 Kommentare

Hallo, ich habe mal eine Frage bezüglich der LAN-Verkabelung in einem Haus. Und zwar ziehen wir demnächst ins Elternhaus, ...