Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
qbprogger
Anmeldungsdatum: 13.05.2008 Beiträge: 49 Wohnort: Kirchlinteln
|
Verfasst am: 29.12.2008, 11:24 Titel: Pingbefehl in QB abfangen |
|
|
Hallo,
wenn ich in der Eingabeaufforderung
eingebe wird ja an die IP das Ping signal gesendet.
Ist es möglich das Ergebnis aubzufangen?
Mfg,
QBPROGGER _________________ Proggen macht Spaß!!!
|
|
Nach oben |
|
|
Manuel
Anmeldungsdatum: 23.10.2004 Beiträge: 1271 Wohnort: Bayern
|
Verfasst am: 29.12.2008, 13:30 Titel: |
|
|
Die Ausgabe direkt von QB aus abzufragen ist annähernd unmöglich^^. Es ist allerdings möglich, die Ausgabe in Datei umzulenken, die du dann mit QBasic öffnen und interpretieren kannst.
Zum Umlenken der Ausgabe einfach ein "> dateiname" schreiben, also Code: | ping -t [IP] > ping.txt | Dabei wird die Datei "ping.txt" neu erstellt bzw. eine bereits vorhandene ersetzt. Um die Ausgabe an die Textdatei ranzuhängen, muss man einen Doppelumlenker setzen: Code: | ping -t [IP] >> ping.txt | Lässt den bereits vorhandenen Text in die "ping.txt" unberührt und hängt die Ausgabe einfach nur an.
Ob es allerdings möglich ist, eine Textdatei mit QB lesend zu öffnen, während der ping-Befehl läuft, wage ich zu bezweifeln^^. _________________ DL Walk (Denkspiel) | DL Malek (Denkspiel) | DL Warrior (ASCII-Adventure) | DL Sokodos (Sokoban-Klon)
---
www.astorek.de.vu |
|
Nach oben |
|
|
Heizi
Anmeldungsdatum: 19.01.2005 Beiträge: 309
|
Verfasst am: 29.12.2008, 14:00 Titel: |
|
|
Ich glaub das geht nur ohne das -t, denn ansosnten lüuft der Ping ja unendlich weiter oder??
MfG |
|
Nach oben |
|
|
qbprogger
Anmeldungsdatum: 13.05.2008 Beiträge: 49 Wohnort: Kirchlinteln
|
Verfasst am: 29.12.2008, 14:48 Titel: |
|
|
Bis jetzt habe ich:
Code: |
top:
CLS
INPUT "Funktion"; f$
IF f$ = "IP" THEN
INPUT "IP= ", ip$
SHELL "ping -a -n 4 " + ip$ + " > C:\ip.txt"
e% = 0
ELSEIF f$ = "DOMAIN" THEN
INPUT "DOMAIN= ", dom$
SHELL "ping -n 4 " + dom$ + " > C:\domain.txt"
e% = 1
ELSE
PRINT "Unbekannter Befehl."
GOSUB top
END IF
IF e% = 0 THEN
'IP einlesen
ELSEIF e% = 1 THEN
'Domain einlesen
ELSE
PRINT "!Systemfehler!"
PRINT "Bitte Taste drcken"
DO WHILE a$ = ""
a$ = INKEY$
LOOP
END IF
END |
In den Dateien steht dann das Ergebniss. _________________ Proggen macht Spaß!!!
|
|
Nach oben |
|
|
dreael Administrator
Anmeldungsdatum: 10.09.2004 Beiträge: 2514 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 29.12.2008, 21:35 Titel: |
|
|
Kleine Verbesserung:
Code: | INPUT "Host oder IP-Adresse";h$
SHELL "ping " + h$ + " >" + ENVIRON$("TEMP") + "\~PING.TXT"
OPEN ENVIRON$("TEMP") + "\~PING.TXT" FOR INPUT AS 1
WHILE NOT EOF(1)
LINE INPUT#1, z$
' z$ entsprechend verarbeiten
WEND
CLOSE 1
KILL ENVIRON$("TEMP") + "\~PING.TXT" |
d.h. übliches Grundprinzip, den Output in eine temporäre Datei (in %TEMP%!) umleiten, einlesen/verarbeiten und temporäre Datei am Schluss wieder löschen.
Hinweis: Code nicht getestet, d.h. hier direkt hineingeschrieben. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
|
qbprogger
Anmeldungsdatum: 13.05.2008 Beiträge: 49 Wohnort: Kirchlinteln
|
Verfasst am: 02.01.2009, 17:18 Titel: |
|
|
So,
Ich habe das Proggi jetzt fertig:
Code: | top:
CLS
INPUT "Funktion"; f$
IF f$ = "IP" THEN
INPUT "IP= ", ip$
PRINT "Bitte warten..."
SHELL "ping -a -n 4 " + ip$ + " >" + ENVIRON$("TEMP") + "\~ip.txt"
PRINT "Fertig!"
e% = 0
ELSEIF f$ = "DOMAIN" THEN
INPUT "DOMAIN= ", dom$
PRINT "Bitte warten..."
SHELL "ping -n 4 " + dom$ + " >" + ENVIRON$("TEMP") + "\~domain.txt"
PRINT "Fertig!"
e% = 1
ELSE
PRINT "Unbekannter Befehl."
GOSUB top
END IF
IF e% = 0 THEN
OPEN ENVIRON$("TEMP") + "\~ip.txt" FOR INPUT AS #1
WHILE NOT EOF(1)
LINE INPUT #1, z$
PRINT z$
WEND
CLOSE
KILL ENVIRON$("TEMP") + "\~ip.txt"
ELSEIF e% = 1 THEN
OPEN ENVIRON$("TEMP") + "\~domain.txt" FOR INPUT AS #1
WHILE NOT EOF(1)
LINE INPUT #1, z$
PRINT z$
WEND
CLOSE
KILL ENVIRON$("TEMP") + "\~domain.txt"
ELSE
PRINT "!Systemfehler!"
PRINT "Bitte Taste drcken"
DO WHILE a$ = ""
a$ = INKEY$
LOOP
END IF
END |
Es läuft sehr gut.
Danke an alle.
qbprogger _________________ Proggen macht Spaß!!!
|
|
Nach oben |
|
|
nemored
Anmeldungsdatum: 22.02.2007 Beiträge: 4637 Wohnort: ~/
|
Verfasst am: 02.01.2009, 20:42 Titel: |
|
|
oha ...
Bei
Code: | top:
[...]
GOSUB top |
kann es dir zu einem Stapelüberlauf kommen. GOSUB verzweigt zu der Stelle top und merkt sich eine Rücksprungadresse, zu der er eigentlich irgendwann einmal mit RETURN zurückgeschickt werden soll. Wird zu oft GOSUB ohne RETURN aufgerufen, dann geht dem Programm der Speicher aus.
Besser wäre da schon GOTO, aber noch viel besser ist natürlich eine Schleife. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
|
qbprogger
Anmeldungsdatum: 13.05.2008 Beiträge: 49 Wohnort: Kirchlinteln
|
Verfasst am: 03.01.2009, 21:35 Titel: |
|
|
Jetzt aber:
Code: | DO WHILE e% = 0
CLS
INPUT "Funktion"; f$
IF f$ = "IP" THEN
INPUT "IP= ", ip$
PRINT "Bitte warten..."
SHELL "ping -a -n 4 " + ip$ + " >" + ENVIRON$("TEMP") + "\~ip.txt"
PRINT "Fertig!"
e% = 1
ELSEIF f$ = "DOMAIN" THEN
INPUT "DOMAIN= ", dom$
PRINT "Bitte warten..."
SHELL "ping -n 4 " + dom$ + " >" + ENVIRON$("TEMP") + "\~domain.txt"
PRINT "Fertig!"
e% = 2
ELSEIF f$ = "HACK" THEN
INPUT "IP= ", h$
e% = 3
ELSE
PRINT "Unbekannter Befehl."
END IF
LOOP
IF e% = 1 THEN
OPEN ENVIRON$("TEMP") + "\~ip.txt" FOR INPUT AS #1
WHILE NOT EOF(1)
LINE INPUT #1, z$
PRINT z$
WEND
CLOSE
KILL ENVIRON$("TEMP") + "\~ip.txt"
ELSEIF e% = 2 THEN
OPEN ENVIRON$("TEMP") + "\~domain.txt" FOR INPUT AS #1
WHILE NOT EOF(1)
LINE INPUT #1, z$
PRINT z$
WEND
CLOSE
KILL ENVIRON$("TEMP") + "\~domain.txt"
ELSE
PRINT "!Systemfehler!"
PRINT "Bitte Taste drcken"
DO WHILE a$ = ""
a$ = INKEY$
LOOP
END IF
END |
Danke nemored.
Qbprogger _________________ Proggen macht Spaß!!!
|
|
Nach oben |
|
|
|