Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
648to652
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
648to652
648to652
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

PCs Pingen

PCs Pingen
08.08.2005 12:01:45
klamsi
Hi Ihr ^^
Ich hab ne Liste von PCs bei denen ich schauen muss ob die Online sind.
Ich hab mir zwar ein Tool geschrieben, dass alle PCs per CMD Pingt und das Ergebnis für jeden PC in eine Txt schreibt.
Aber dann muss ich jede Txt einzeln öffnen, und nachschauen, ob der PC online ist oder nicht...
(hier das tool: https://www.herber.de/bbs/user/25413.xls
PS: Thx an alle von Herber.de die mir bei einigen Problemen mit diesem tool geholfen haben... allein hätt ichs net hinbekomm :o) )
Cool wäre es, wenn das VBA-Tool in die Exceltabelle alle Hoste-Namen der PCs reinschreibt, und dahinter ob Sie online sind oder nicht...
Ich weiß aber nicht wie man die mit der CMD erstellten Txts genau auslesen muss, damit erkannt wird ob die PCs online sind oder nicht.
Oder gibt es eine Möglichkeit für jeden PC einen Wahrheitswert zurückzugeben, ob dieser Online ist oder nicht?
Ich hab zwar ein Ping-Tool implementiert (bzw. geklaut xD), dass für einen Hostnamen anzeigen kann, ob der PC online ist oder nicht, kann aber mit dem Sourcecode nicht genug anfangen, als das ich es so umschreiben könnte, dass eine ganze Liste gepingt wird. (dieses Ping-Tool liegt unter UserForm 03)
Vielleicht habt ihr ne Idee wie man das lösen könnte...
Mein Gehirnschmalz reicht dafür nicht xD
Schonmal danke für alle Solutionansätze im Vorraus ^^
Grüße,
Klamsi

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: PCs Pingen
08.08.2005 12:11:03
Kurt
Hallo,
versuch mal ob du das an deine Bedürfnisse anpassen kannst

Sub pruefen()
Rechner = "haupt" ' hier bitte den rechnernamen eintragen oder eben ip
ShellAndWait ("CMD.EXE /c " & "ping " & Rechner & " > C:\Test.txt")
Close #1
Open "c:\Test.txt" For Input As #1
Input #1, Textzeile
If Left(Textzeile, 4) = "Ping" Then
MsgBox ("Der Rechner " & Rechner & " ist nicht erreichbar")
Else
MsgBox ("Der Rechner " & Rechner & " ist erreichbar")
End If
Close #1
Kill "c:\Test.txt"
End Sub


Function ShellAndWait(FileName As String)
Dim objScript
Set objScript = CreateObject("WScript.Shell")
ShellApp = objScript.Run(FileName, 1, True)
ShellAndWait = True
End Function

...und Tschüss Kurt
Anzeige
AW: PCs Pingen
08.08.2005 12:34:31
Klamsi
Des funzt bei mir net wirklich... ich kann alles als Hostname angeben, und er sagt immer der der Rechner erreichbar sei.
Aber die Idee die Txt so auszulesen find ich super :)
Aber er liest ja nur die ersten 4 zeichen in der ersten Zeile ein, des ist unsicher.
Weil der Inhalt der Txt könnte auch lauten:
Ping Computer [10.204.19.57] mit 32 Bytes Daten:
Zeitueberschreitung der Anforderung.
Zeitueberschreitung der Anforderung.
Zeitueberschreitung der Anforderung.
Da erkennt das tool auch, dass der Computer Online ist...
Kann man auch in den unteren Zeilen etwas auslesen wollen?
In diesen Beispiel könnte man in Zeile 2 "Antwort" auslesen lassen...
0: Ping Computer [10.204.7.52] mit 32 Bytes Daten:
1:
2: Antwort von 10.204.7.52: Bytes=32 Zeit 10ms TTL=125
3: Antwort von 10.204.7.52: Bytes=32 Zeit 10ms TTL=125
4: Antwort von 10.204.7.52: Bytes=32 Zeit 10ms TTL=125
Wenn das Tool "Antwort" zurück bekommt, ist sichergestellt dass der PC wirklich Online ist.
Is das über ...
------------------
Input #1, Textzeile
If Left(Textzeile, 4) = "Ping" Then
--------------------
... realisiertbar?
Liebe Grüße,
Klamsi ^^
Anzeige
AW: PCs Pingen
08.08.2005 12:47:11
Kurt
Hi,
mal schnell umgebaut ;-)

Sub pruefen()
Rechner = "nt14366" ' hier bitte den rechnernamen eintragen oder eben ip
ShellAndWait ("CMD.EXE /c " & "ping " & Rechner & " > C:\Test.txt")
Close #1
Open "c:\Test.txt" For Input As #1
Do While Not EOF(1)
Input #1, Textzeile
If Left(Textzeile, 4) = "Antw" Then Exit Do
Loop
If Left(Textzeile, 4) <> "Antw" Then
MsgBox ("Der Rechner " & Rechner & " ist nicht erreichbar")
Else
MsgBox ("Der Rechner " & Rechner & " ist erreichbar")
End If
Close #1
Kill "c:\Test.txt"
End Sub

...und Tschüss Kurt
Anzeige
AW: PCs Pingen
08.08.2005 12:56:22
Klamsi
Hey Cool
Das sieht seeehr gut aus \(^_^)/
Ich glaube damit kann ich weiterarbeiten =)
Perfekt wäre es jetzt noch, wenn du mir den Code noch ein bissl näher bringen könntest, weil ich check nicht was da abgeht... würd aber gern dazulernen :D
Dafür würd ich dir ewig dankbar sein ^^
Gruß,
Klamsi
AW: PCs Pingen
08.08.2005 13:06:01
Kurt
*grins*
ich und erklären :-(
na ich versuchs mal:

Sub pruefen()
Rechner = "nt14366" ' hier bitte den rechnernamen eintragen oder eben ip
'dürfte klar sein
'hier kannst du natürlich auch über eine schleife zellwerte abfragen
ShellAndWait ("CMD.EXE /c " & "ping " & Rechner & " > C:\Test.txt")
'pingt und ruft die funktion auf um das ende der ping-aktion abzuwarten
Close #1
'vorsichtshalber datei 1 schliessen
Open "c:\Test.txt" For Input As #1
'die oben erstellte textdatei öffnen
Do While Not EOF(1)
'bis zum ende der datei einlesen
Input #1, Textzeile
'eine zeile einlesen
If Left(Textzeile, 4) = "Antw" Then Exit Do
'prüfen ob die zeile mit "Antw" beginnt
Loop
'nächste zeile
If Left(Textzeile, 4) <> "Antw" Then
MsgBox ("Der Rechner " & Rechner & " ist nicht erreichbar")
Else
MsgBox ("Der Rechner " & Rechner & " ist erreichbar")
End If
Close #1
'oben erstellte datei schliessen
Kill "c:\Test.txt"
'oben erstellte datei löschen
End Sub

...und Tschüss Kurt
Anzeige
AW: PCs Pingen
08.08.2005 13:28:14
Kurt
Hallo
und jetzt mal genauso wie du dir das vorgestellt hast:

Sub pruefen()
For i = 1 To 10 'die ersten 10 zeilen der spalte A werden als ip oder rechnernamen genommen
Rechner = Worksheets("Tabelle1").Cells(i, 1).Value
ShellAndWait ("CMD.EXE /c " & "ping " & Rechner & " > C:\Test.txt")
Close #1
Open "c:\Test.txt" For Input As #1
Do While Not EOF(1)
Input #1, Textzeile
If Left(Textzeile, 4) = "Antw" Then Exit Do
Loop
If Left(Textzeile, 4) <> "Antw" Then
Worksheets("Tabelle1").Cells(i, 2).Value = "Mist nicht erreichbar"
Else
Worksheets("Tabelle1").Cells(i, 2).Value = "Juchuu erreichbar"
End If
Close #1
Kill "c:\Test.txt"
Next i
End Sub


Function ShellAndWait(FileName As String)
Dim objScript
Set objScript = CreateObject("WScript.Shell")
ShellApp = objScript.Run(FileName, 1, True)
ShellAndWait = True
End Function

alles in ein Modul !
in Spalte A der Tabelle1 die Rechner eingetragen und los gehts ...
...und Tschüss Kurt
Anzeige
AW: PCs Pingen
08.08.2005 14:02:00
Klamsi
Oki,
ich glaub ich habs gecheckt ^^
Hast gut erklärt ;-)
das war wohl nix
08.08.2005 13:27:01
MichaV
Hallo Klamsi,
ich nehm alles zurück ;o) Das Teil arbeitet ja auch mit txt. :o(
Gruß- Micha
AW: PCs Pingen ... Es funktioniert ^^
08.08.2005 15:28:50
Klamsi
Danke an euch beide.
Ich habs nu so hingebogen das es funzt.
Ich hab alle Tipps ein bissl zusammengemixt und kam jetzt auf das Ergebnis, was ich gesucht hab.
Vielen vielen Dank.
Hier der Quellcode:
Private Sub CmdPing3_Click()
For i = 0 To ListBoxInsert.ListCount - 2 'Schleife zum Auslesen der PCs aus ListBox
drop = ListBoxInsert.List(i) 'in Drop wird der Hostename gespeichert.
Range("A" & i + 1).Select
ActiveCell.FormulaR1C1 = drop

ShellAndWait ("CMD.EXE /c " & "ping " & drop & " &gt C:\Test.txt") 'klappt wunderbar ^^
Close #1
Open "c:\Test.txt" For Input As #1
Do While Not EOF(1)
Input #1, Textzeile
If Left(Textzeile, 4) = "Antw" Then Exit Do
Loop

If Left(Textzeile, 4) &lt&gt "Antw" Then
Range("B" & i + 1).Select
ActiveCell.FormulaR1C1 = "Offline"
Else
Range("B" & i + 1).Select
ActiveCell.FormulaR1C1 = "Online"
End If

Close #1
Kill "c:\Test.txt"
Next i
Anzeige
AW: PCs Pingen ... Es funktioniert ^^
08.08.2005 17:46:13
Kurt
hi,
gratuliere ;-)
klitzekleine Verbesserung: es muss nicht selectet (99,9% sind überflüssig) werden (minimiert das Bildschirmflackern)

Private Sub CmdPing3_Click()
For i = 0 To ListBoxInsert.ListCount - 2 'Schleife zum Auslesen der PCs aus ListBox
Drop = ListBoxInsert.List(i) 'in Drop wird der Hostename gespeichert.
Range("A" & i + 1).Value = Drop
ShellAndWait ("CMD.EXE /c " & "ping " & Drop & " > C:\Test.txt") 'klappt wunderbar ^^
Close #1
Open "c:\Test.txt" For Input As #1
Do While Not EOF(1)
Input #1, Textzeile
If Left(Textzeile, 4) = "Antw" Then Exit Do
Loop
If Left(Textzeile, 4) <> "Antw" Then
Range("B" & i + 1).Value = "Offline"
Else
Range("B" & i + 1).Value = "Online"
End If
Close #1
Kill "c:\Test.txt"
Next i
End Sub

...und Tschüss Kurt
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige